| |
| Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte |
| |
| PNY präsentiert die neue NVIDIA RTX A400 und die A1000 Grafikkarte, eine Pressemitteilung
|
Autor
|
Thema: Summarry-Info Prüfen (739 mal gelesen)
|
Theo37 Mitglied Techniker
Beiträge: 426 Registriert: 08.10.2008
|
erstellt am: 09. Mrz. 2009 11:14 <-- editieren / zitieren --> Unities abgeben:
Hallo an Alle, ich hab mal wieder ein kleines Problem in Lisp. (defun c:John (oben unten) (setq doc (vla-get-ActiveDocument (vlax-get-Acad-Object))) (setq db (vla-get-Database doc)) (setq si (vla-get-SummaryInfo db)) (vla-AddCustomInfo si "NEB-Bezeichnung oben" oben) (vla-AddCustomInfo si "NEB-Bezeichnung unten" unten) (vlax-release-object si) (vlax-release-object db) (vlax-release-object doc) ) Die oben stehnden Programmzeilen funktionieren einwandfrei. Nur wenn es "NEB-Bezeichnung oben" und "NEB-Bezeichnung unten" schon gibt, dann werden die beiden nochmal angelegt. Gibt es eine Möglichkeit zu prüfen, ob es die Beiden schon gibt und wenn ja daß dann die alten werte überschrieben werden? Ich kenn mich in Lisp nicht gut aus. Kann mir jemand helfen. Danke im Vorraus Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
CADchup Ehrenmitglied V.I.P. h.c.
Beiträge: 3336 Registriert: 14.03.2001 Sicher ist, dass nichts sicher ist. Selbst das nicht. Joachim Ringelnatz
|
erstellt am: 09. Mrz. 2009 11:25 <-- editieren / zitieren --> Unities abgeben: Nur für Theo37
Hi, naja, aber dass hast du doch schon mal hingekriegt. Für deine Zwecke solltest du dir die Methoden GetCustomByKey zum Überprüfen und SetCustomByKey zum Setzen einer vorhandenen Eigenschaft ansehen. Gruß CADchup
------------------ CADmaro.de [Diese Nachricht wurde von CADchup am 09. Mrz. 2009 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Theo37 Mitglied Techniker
Beiträge: 426 Registriert: 08.10.2008
|
erstellt am: 09. Mrz. 2009 11:49 <-- editieren / zitieren --> Unities abgeben:
Hallo CADchup, kann ich "(vla-GetCustomByKey si "NEB-Bezeichnung oben" 'value3)" aufrufen ohne daß ich eine Fehlermeldung bekomme, wenn "NEB-Bezeichnung oben" noch nicht vorhanden ist? Vielen Dank. Theo Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
CADchup Ehrenmitglied V.I.P. h.c.
Beiträge: 3336 Registriert: 14.03.2001 Sicher ist, dass nichts sicher ist. Selbst das nicht. Joachim Ringelnatz
|
erstellt am: 09. Mrz. 2009 11:59 <-- editieren / zitieren --> Unities abgeben: Nur für Theo37
Ja, zum Besipiel indem du den möglichen Fehler mit (vl-catch-all-error-p (vl-catch-all-apply abfängst. Oder, indem du alle Eigenschaften erstmal ausliest und prüfst, ob deine schon dabei ist. Das kann man in einer Schleife mit NumCustomInfo und GetCustomByIndex machen. Gruß CADchup
------------------ CADmaro.de Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Theo37 Mitglied Techniker
Beiträge: 426 Registriert: 08.10.2008
|
erstellt am: 09. Mrz. 2009 14:07 <-- editieren / zitieren --> Unities abgeben:
Hallo CADchup, ich habe mich entschlossen den Fehler abzu fangen. Und habe dazu folgende Zeilen geschrieben: (defun c:John () (setq doc (vla-get-ActiveDocument (vlax-get-Acad-Object))) (setq db (vla-get-Database doc)) (setq si (vla-get-SummaryInfo db)) (setq errobj (vl-catch-all-apply '(vla-GetCustomByKey si "NEB-Bezeichnung oben" 'value3) ) ) (if (= errobj NIL) (vla-GetCustomByKey si "NEB-Bezeichnung oben" "TIC") (vla-AddCustomInfo si "NEB-Bezeichnung oben" "TIC") ) (vlax-release-object si) (vlax-release-object db) (vlax-release-object doc) ) Bewirkt leider gar nichts, bekomme immer noch die Fehlermeldung, daß der Key nicht gefunden wurde. Was mache ich falsch? Gruß, Theo
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
joern bosse Ehrenmitglied Dipl.-Ing. Vermessung
Beiträge: 1763 Registriert: 11.10.2004 Window 11 ACAD 2021 CIVIL 2021 BricsCAD ab V14 11th Gen Intel(R) Core(TM) i7-1165G7 @ 2.80GHz 2.80 GHz 32.0GB RAM NVIDIA GeForce MX450<P>
|
erstellt am: 09. Mrz. 2009 14:29 <-- editieren / zitieren --> Unities abgeben: Nur für Theo37
|
CADchup Ehrenmitglied V.I.P. h.c.
Beiträge: 3336 Registriert: 14.03.2001 Sicher ist, dass nichts sicher ist. Selbst das nicht. Joachim Ringelnatz
|
erstellt am: 09. Mrz. 2009 14:51 <-- editieren / zitieren --> Unities abgeben: Nur für Theo37
(if (= errobj NIL)bringt's nicht, weil's auch im Fehlerfall nicht nil sein würde. Außerdem macht man (if (= irgendwas nil) sowieso nicht. (if irgendwas reicht hier doch vollkommen. Jörns Link zeigt, wie's geht und kondensiert sieht's so aus: Code:
(if (not (vl-catch-all-error-p (vl-catch-all-apply 'vla-GetCustomByKey (list si "NEB-Bezeichnung oben" 'value3) ) ) ) (vla-SetCustomByKey si "NEB-Bezeichnung oben" "Warschonda") (vla-AddCustomInfo si "NEB-Bezeichnung oben" "Nochnichtda") )
Gruß CADchup
------------------ CADmaro.de [Diese Nachricht wurde von CADchup am 09. Mrz. 2009 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Theo37 Mitglied Techniker
Beiträge: 426 Registriert: 08.10.2008
|
erstellt am: 09. Mrz. 2009 17:04 <-- editieren / zitieren --> Unities abgeben:
|
CADchup Ehrenmitglied V.I.P. h.c.
Beiträge: 3336 Registriert: 14.03.2001 Sicher ist, dass nichts sicher ist. Selbst das nicht. Joachim Ringelnatz
|
erstellt am: 10. Mrz. 2009 08:46 <-- editieren / zitieren --> Unities abgeben: Nur für Theo37
|