DRSICHT / AutoCAD ObjectARX und .NET
bccad 21. Jun. 2018, 10:14

Hallo,

in meinem Programm gibt es einen Teil der nur richtig funktioniert
wenn das Koordinatensystem auf Welt eingestellt ist.
Also habe ich mir das aktuelle Koordinatensystem gemerkt, Welt
eingestellt, mein Programm laufen lassen und zum Schluss wieder
das akt. Koordinatensystem eingestellt.
Das klappt auch sehr gut. Was manchmal stört ist das danach
die Draufsicht auf Welt steht.
Dann muss ich den Befehl "DRSICHT <aktuelles BKS> Enter" ausführen.
Gibt es dafür einen entsprechenden Befehl im API ?
Hab es mit

Code:
doc.SendStringToExecute("._DRSICHT", True, False, False)

in allen Variationen ausprobiert, am Ende muss ich immer noch die Entertaste drücken.

Mfg bccad

Brischke 21. Jun. 2018, 10:23

füge ein Leerzeichen in den Commandaufruf ein, dann sollte es gehen.

Code:

doc.SendStringToExecute("._DRSICHT ", True, False, False)


Grüße!
Holger

cadffm 21. Jun. 2018, 11:36

Nur für den Fall der Unwissenheit:

Wenn das Programm wirklich nur das WKS benötigt(du nutzt also einen Autocad-Befehl oder bist zu Faul Koordinatenrückgaben von BKS zu WKS zu transformieren?)

Dann hat DRSICHT hier nichts verloren, denn das ändert die Ansicht und nicht das Koordinatensystem!?
Was auch immer du vorher machst und falls nur das WKS benötigt wird, setze das aktuelle BKS auf Welt und anschliessend zurück.

In Autocad wäre es der Befehl BKS/_UCS.

Mir ist nur der "Widerspruch" von BKS und DRSICHT aufgefallen,
aber vermutlich brauchst du wirklich eine WKS-lotrechte Ansicht.
(Dann wäre die Frage ob wirklich das BKS verstellt werden muss für dein Vorhaben  )

bccad 22. Jun. 2018, 14:10

Hallo cadffm,

Es geht darum das die Zeichnung für den Anwender auf dem Bildschirm unverändert aussieht. Das klappt aber nicht wenn ein BKS gesetzt und die Ansicht auf dieses BKS gedreht war.
Dann wird zwar das BKS wieder gesetzt aber die Ansicht nicht wieder original ausgerichtet.

@Holger: doc.SendStringToExecute("._DRSICHT ", True, False, False) geht leider nicht, er wartet immer noch auf ein Enter (Bestätigung aktuelles BKS)

Mfg bccad

Code:

Dim ucs As Matrix3d = ed.CurrentUserCoordinateSystem
ed.CurrentUserCoordinateSystem = Matrix3d.Identity

' Hier wird etwas im WKS ausgeführt

ed.CurrentUserCoordinateSystem = ucs
doc.SendStringToExecute("_DRSICHT ", True, False, False)


cadffm 22. Jun. 2018, 14:49

Ich komme ja nicht aus der .net Ecke, aber sowohl deiner erster wie auch dein zweiter Versuch zum selben Ergebnis führt dann gibts da wohl eine ähnliche "unterdrücken" Funktion wie bei Menümacros.

In dem Fall Versuche zwei Leerzeichen oder einen Zeilenumbruch(oder zwei)
("_DRSICHT ")
("_DRSICHT\n")
am hübschesten wäre wenn der Syntax ("_DRSICHT\n\n") funktioniert, so sieht man jeder einzelne benötigte "enter"Anweisung eindeutig.

cadffm 22. Jun. 2018, 14:53

Warum funktioniet denn "_DRSICHT" überhaupt? Ist das ein .net Special?
Immerhin gibt es diesen internationalen Befehl nicht!


entweder "DRSICHT" oder "_PLAN", vorzugsweise mit Punkt für die Originaldefinition("_.PLAN\n_current\n")

bccad 25. Jun. 2018, 11:20

Nach dem ich wirklich alle Varianten durchprobiert hatte habe
ich es mal so versucht:

Code:
doc.SendStringToExecute("DRSICHT" & vbCr & vbCr, True, False, False)

So funktioniert es. Trotzdem vielen Dank für eure Unterstützung.

bccad