| |
| Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für BricsCAD |
| |
| Vier Profi-Lösungen verbessern den CAD-Entwurf, eine Pressemitteilung
|
Autor
|
Thema: Lisp-Unterschiede zu ACAD (2445 mal gelesen)
|
Arcuso Mitglied Vermessung
Beiträge: 70 Registriert: 25.07.2011 Windows 7/64 prof. AutoCAD 2011 BricsCad v12
|
erstellt am: 15. Dez. 2011 09:16 <-- editieren / zitieren --> Unities abgeben:
Hallo ! Ich habe festgestellt, dass in BricsCAD die Funktion (vla-InsertBlock *ms* *ip* *ff* ....) nicht so wie in AutoCAD eine vorhandene Block-Definition erneuert, dazu muss die herkömmliche Funktion (command "_INSERT" [Blockname=Filename] ....) verwendet werden. Existiert eigentlich eine Liste jener Lisp-Funktionen, deren Verhalten von der ACAD-Version abweicht? Vielleicht gibt es auch Abweichungen zwischen BricsCAD V11 und V12? MfG Arcuso Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Arcuso Mitglied Vermessung
Beiträge: 70 Registriert: 25.07.2011 Windows 7/64 prof. AutoCAD 2011 BricsCad v12
|
erstellt am: 16. Dez. 2011 09:11 <-- editieren / zitieren --> Unities abgeben:
Hallo ! Habe weiteren Unterschied zu ACAD entdeckt: Weder mit (redraw Attrib-Entity 3) noch mit (vla-Highlight Attrib-Object 3) lässt sich bei BricsCAD ein Attribut separat vom Block ausleuchten. Ausserdem ist generell das Ausleuchten strichliert nicht möglich sondern nur mit Fett-Darstellung. MfG Arcuso Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Arcuso Mitglied Vermessung
Beiträge: 70 Registriert: 25.07.2011 Windows 7/64 prof. AutoCAD 2011 BricsCad v12
|
erstellt am: 20. Dez. 2011 08:06 <-- editieren / zitieren --> Unities abgeben:
Hallo ! Ebenso merkwürdig: Ich erhalte bei der Wahl eines Blockes den Objectnamen der Referenz: (setq bo (vlax-ename->vla-object (car (entsel)))) -> #<VLA-OBJECT IAcadBlockReference 0231dd18> und eine Liste mit den Objectnamen seiner Attribute: (setq al (vlax-safearray->list (vlax-variant-value (vla-getAttributes bo)) ) ) -> (#<VLA-OBJECT IAcadAttributeReference2 022dad20> #<VLA-OBJECT IAcadAttributeReference2 02365c30> #<VLA-OBJECT IAcadAttributeReference2 0224ac38> ) Bei direkter Wahl eines Attributes erhalte ich auch einen Objectnamen: (setq ao (vlax-ename->vla-object (car (nentsel)))) -> #<VLA-OBJECT IAcadAttributeReference2 022dad20> Nun will ich die Position des gewählten Attributes feststellen: (vl-position ao al) und erhalte in ACAD wie erwartet 0, in BCAD jedoch nil ! Die Erkenntnis macht mich stutzig und ich prüfe weiter: (member ao al) -> nil Trotzdem wird dasselbe Object angesprochen: (= (vla-get-Handle ao) (vla-get-Handle (car al))) -> T (= (vla-get-ObjectID ao) (vla-get-ObjectID (car al))) -> T Umweg über die Entitynames: (member (vlax-vla-object->ename ao) (mapcar 'vlax-vla-object->ename al) ) -> (<Entity name: 0239d060> <Entity name: 0239d0a0> <Entity name: 0239d1a0> ) Gültig auch: (vl-position (vlax-vla-object->ename ao) (mapcar 'vlax-vla-object->ename al) ) -> 0 Der Umweg über Strings ist zwar sicher aber nervig: (= (vl-princ-to-string ao) (car (mapcar 'vl-princ-to-string al))) -> T (eq (vl-princ-to-string ao) (car (mapcar 'vl-princ-to-string al))) -> T Bei uns haben sich in 20 Jahren über 2000 Lisp-Befehle und Sub-Funktionen angesammelt, die ich nun für eine geplante Umstellung auf BricsCAD ausmisten bzw. anpassen will. Obige Feststellungen erschweren das gewaltig, weil es erwarten lässt, dass es noch einige andere Abweichungen beim Verhalten im Gegensatz zu ACAD gibt. Daher nochmals meine Frage an jene, die sich schon länger mit BricsCAD und Lisp beschäftigen, ob es ev. eine Liste bereits bekannter Stolpersteine gibt. Danke MfG Arcuso Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
PixelMission Mitglied Designer
Beiträge: 31 Registriert: 17.12.2011
|
erstellt am: 20. Dez. 2011 09:59 <-- editieren / zitieren --> Unities abgeben: Nur für Arcuso
Hallo Arcuso ... Bei der Umstellung einer meiner URALT-Applikationen fiel mir auf, dass die Auswahl "_si" in BC (leider) nicht existiert. Aus der Patsche geholfen hat mir - wer sonst: T. Moses ... "_saveas" ist m. E. auch ein "wenig" gewöhnungsbedürftig ... Nun arbeite ich nicht mit ...vl..., sondern seit mehr als 25 Jahren nur mit dem "normalen" Code - daher gibt es bei meinen Routinen wahrscheinlich auch weniger "Probleme"?! Über die Feiertage habe ich ein wenig Luft ... ich schaue mir mal verschärft alte Routinen an und gelobe, hier alles preiszugeben, was NICHT funktioniert! Gruß: WB Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Arcuso Mitglied Vermessung
Beiträge: 70 Registriert: 25.07.2011 Windows 7/64 prof. AutoCAD 2011 BricsCad v12
|
erstellt am: 20. Dez. 2011 15:10 <-- editieren / zitieren --> Unities abgeben:
Danke für die Anteilnahme, WB ! Die selbstgstrickten Dialogboxen sehen auch manchmal völlig anders aus als in ACAD. Das liegt wohl auch daran, weil in der Benutzeroberfläche ein anderer Font verwendet wird. Ob man den irgendwie ändern kann, glaube ich allerdings nicht. Im MerviSoft-Forum herrscht so wenig Frequenz, dass ich bezweifle, dort weiterzukommen. L.G. Arcuso Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
T.Moses Mitglied
Beiträge: 82 Registriert: 16.03.2005 Win10, Core i9-9900k @5.0 GHz, 32 GB Ram, NVidia GT1030
|
erstellt am: 20. Dez. 2011 17:14 <-- editieren / zitieren --> Unities abgeben: Nur für Arcuso
Hallo, Arcuso, da haben Sie einen Bug gefunden - Danke ! Werde dies schnellstens korrigieren (und natürlich einen adäquaten Test in das Bricscad'sche Testsystem einbringen) Vielen Dank & Schöne Grüsse Torsten Moses Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
cadffm Ehrenmitglied V.I.P. h.c. 良い精神
Beiträge: 22275 Registriert: 03.06.2002 System: F1 und Google
|
erstellt am: 20. Dez. 2011 17:23 <-- editieren / zitieren --> Unities abgeben: Nur für Arcuso
|
CADmium Moderator Maschinenbaukonstrukteur
Beiträge: 13527 Registriert: 30.11.2003 Hinweis: Meine Mitarbeit auf CAD.DE ist fakultativ, unentgeltlich und beruht nur auf einem ausgeprägtem Helfersyndrom.
|
erstellt am: 20. Dez. 2011 22:27 <-- editieren / zitieren --> Unities abgeben: Nur für Arcuso
|
T.Moses Mitglied
Beiträge: 82 Registriert: 16.03.2005 Win10, Core i9-9900k @5.0 GHz, 32 GB Ram, NVidia GT1030
|
erstellt am: 23. Dez. 2011 12:12 <-- editieren / zitieren --> Unities abgeben: Nur für Arcuso
Die Fehler mit (member) und (vl-position) sind korrigiert - betraf nicht nur VLA-Objekte, sondern auch Variant und SafeArray Objekte ... Ich denke, die Korrektur wird in einem der nächsten Bricscad-Updates enthalten sein. "Wo es zum Lispforum geht, ist bekannt?" Das Lisp-Forum hier auf CAD.de ? Ich schaue mal ... sollte ja zu finden sein ... Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Theodor Schoenwald Ehrenmitglied
Beiträge: 1672 Registriert: 16.04.2002
|
erstellt am: 23. Dez. 2011 23:36 <-- editieren / zitieren --> Unities abgeben: Nur für Arcuso
Hallo Torsten, bitte vergesse vl-sort nicht, das bringt bei mehrspaltigen Sortierungen Ergebnisse die nicht so richtig sortiert sind. Es freut mich besondern, dass man inzwischen Deine hervoragende Arbeit erkannt hat und schätzt und Dir einen Wegweiser zum CAD.Forum zeigt. Viele Grüße Theodor Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Theodor Schoenwald Ehrenmitglied
Beiträge: 1672 Registriert: 16.04.2002
|
erstellt am: 01. Jan. 2012 22:05 <-- editieren / zitieren --> Unities abgeben: Nur für Arcuso
|
Wolfgang Kirsch Mitglied Büroberater
Beiträge: 41 Registriert: 29.04.2002
|
erstellt am: 20. Jan. 2013 14:18 <-- editieren / zitieren --> Unities abgeben: Nur für Arcuso
Hallo zusammen, ich sitze gerade auch an redraw bzw. vla-highlight Was ich nicht verstehe: - Wenn ich an der Befehlszeile der Reihe nach folgende Befehle eingebe:
Code: (setq obj (entsel))
, danach
Code: (setq obj2 (car obj))
, und schließlich
Code: (redraw obj2 3)
Kann ich erwartungsgemäß ein Objekt auswählen, in der Variablen "obj" speichern und anschließend ausleuchten. Dieselben Zeilen zusammenhängend in ein Lisp eingebaut ermöglichen zwar die Objektauswahl, aber das Ausleuchten funktioniert nicht: Code: (setq obj (entsel)) (setq obj2 (car obj)) (redraw obj2 3)
Das gleiche Problem auch mit vla-highlight:
Code: (setq obj (entsel)) (setq obj2 (vlax-ename->vla-object (car obj))) (vla-highlight obj2 3)
Der Reihe nach, einzeln an der Kommandozeile, funzt wunderbar. So in ein Lisp eingebaut, Ausleuchten geht nicht. Ist das der von Arcuso beschriebene Fehler, oder steh ich da auf dem Schlauch? Bisher dachte ich, wenn es an der Kommandozeile funktioniert, dann geht es auch so im Lisp mfg Wolfgang Kirsch ########## Und es funktioniert doch!
Es kann so einfach sein ... Zwei Zeilen weiter steht ganz harmlos:
Code: command "._area" "_o" obj)
Das hebt die Ausleuchtung des Objektes anscheinend wieder auf, bei Autocad macht das nichts weiter. Für den Anwender ist es in diesem Fall egal, wann genau die Ausleuchtung erfolgt. Ich habe deshalb den Aufruf einfach hinter das "command" geschrieben und alles ist fein . mfg Wolfgang Kirsch [Diese Nachricht wurde von Wolfgang Kirsch am 21. Jan. 2013 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Theodor Schoenwald Ehrenmitglied
Beiträge: 1672 Registriert: 16.04.2002
|
erstellt am: 24. Jan. 2013 21:44 <-- editieren / zitieren --> Unities abgeben: Nur für Arcuso
|