Hallo Bubi,
ich habe mir die DWG und das Lisp nun einmal angesehen (mehr haben wir nicht bekommen).
1. Alles was hier im Thread steht ist gut und richtig, ABER ich denke es hat nichts mit dem Problem zutun!
Dennoch. Du nutzt einen AutoCAD-Befehl (insert) und daher ist es richtig sich um den Objektfang zu kümmern,
es ist also nicht alles unnötig gewesen.
2. Der Code fragt ja jeden Punkt durch den Benutzer einzeln ab,
also wird bei der Punktabfragt und dem Einfügepunkt angeben die
selbe Einstellung verwendet (ansonsten wüßte es der Anwender )
Der User wählt den Zielpunkt(Punkt für Absolute Höhe messen doch mit der Maus, oder?
3. Dann die Beispiele in der DWG, die Lage und Werte passen
generell nicht zu einem "Objektfangproblem" und wenn ich dann
noch deinen Code berücksichtige..
Ich lehne mich mal weit aus dem Fenster (gerne auch zu weit, Hauptsache es hilft womöglich).
Behauptung: Diese Abweichung ist nicht mit deinem Code entstanden,
zumindest nicht wenn der Einfügepunkt durch den Nutzer mit der Maus angegeben wurde.
Völlig UNMÖGLICH!
Und jetzt widerlegt meine These.
BTW: Dein Code kümmert sich auch nicht um ATTREQ, nicht um ATTDIA,
und wenn ich es jetzt richtig verstanden habe, dann wird eigentlich
für diese Anwendung(dein Code) ausschließelich der Objektfang PUNKT benötigt
und dann stellst sich mir die Frage:
Warum nicht einfach den PUNKTfang mit in den Command aufnehmen -> alle Objektfangsorgen los,
besonders vereinfacht es das ganze für den Anwender da die irrelevanten Fänge nicht nerven.
Dann aber frage ich mich auch was der Satz bedeutet:
"Ganz ausschalten werde ich sie aber nicht können, da sie für den Fall einer Codierten Messung noch mit OFang eingefügt werden können müssen."
Denn der User braucht ja den Objektfang(Punkt), also ist das schon generell ausgeschlossen die Objektfänge auszuschalten.
Und was bedeutet "da sie für den Fall einer Codierten Messung noch mit OFang eingefügt werden können müssen." ?
Dein Programm zeigt keinerlei Optionen, daher bin ich da wohl etwas verwirrt in dem Fall.
-
Wenn du (command "_.CHPROP" schon in der While-schleife hast,
dann nimm doch als Objektwahl einfach _last / letztes
und ändere nicht immer alle Blockreferenzen.
und
" (if
(/= (strlen Heigth) 6)
(strcat Heigth "0")
);end if"
Ist auch völlig ohne Funktion - abgesehen von DIMZIN was auch nicht behandelt wird im Code.
Und was ist wenn der Punkt auf 1.5 liegt oder auf 1000.12 ?
Aber das sind nur Kleinigkeiten und haben nichts mit dem Problem zutun.
Noch etwas ganz anderes:
Die Datei ist in einem modernen DWG Format gespeichert,
also ist die Verwendung von Schriftfeldern wohl zulässig in dem Prozess
und dann frage ich mich sofort: Warum schreibt ihr denn "dumme Text" in die Attribute?
Ein Schriftfeld würde zumindest immer den richtigen Wert (der Blockreferenz= anzeigen.
Einzige Vorteil der "dummer Text" Methode: Man könnte Fehler/Manipulationen ausfindig machen, also
Z ungleich Attributwert(gerundet)
--
Sicher das der User das Programm startet und per Hand(Maus) die Punkte mit dem Punkt-Objektfang wählt?
Zur Zeit sehe ich da echt keine Variante wie das Problem bei den CAD Daten und dem Code zustandekommen sollten.
<Ich lege meiner Kenntnis und Aussage AutoCAD zugrunde, mit evtl. vorhandenen BricsCAD spezifischen Abweichungen kenne ich mich nicht aus>
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP