| |
| Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte |
| |
| PNY wird von NVIDIA zum Händler des Jahres gewählt – zum dritten Mal in Folge, eine Pressemitteilung
|
Autor
|
Thema: Wert von dynamischer Block lesen? (1054 mal gelesen)
|
Nano Mitglied
Beiträge: 179 Registriert: 25.10.2004
|
erstellt am: 01. Feb. 2009 13:24 <-- editieren / zitieren --> Unities abgeben:
Hallo Versuche von Ein dynamischer Block die Werte zu lesen, ändern, geht sehr gut (siehe Beispiel) (setq Kanal (car (entsel))) (setProperty (vlax-ename->vla-object Kanal) "Kanal-Breite" 500.0) (setProperty (vlax-ename->vla-object Kanal) "Kanal-Länge" 1000.0) (setProperty (vlax-ename->vla-object Kanal) "Kanal-Isolation" "EI30") (setProperty (vlax-ename->vla-object Kanal) "Kanal-Winkel" 0.0) Gruss Nano ??? Vielleicht >>(vlax-variant-value (vlax-get-property Kanal) 'Value)
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
CAD-Huebner Ehrenmitglied V.I.P. h.c. Verm.- Ing., ATC-Trainer
Beiträge: 9803 Registriert: 01.12.2003 One AutoCAD 2.5 - 2024, AutoCAD, Civil 3D, Win10/Win11
|
erstellt am: 01. Feb. 2009 14:25 <-- editieren / zitieren --> Unities abgeben: Nur für Nano
Zitat: Original erstellt von Nano: HalloVersuche von Ein dynamischer Block die Werte zu lesen,... ??? Vielleicht >>(vlax-variant-value (vlax-get-property Kanal) 'Value)
Ja, vielleicht! Sollen wir das für dich ausprobieren, da dir am Wochenende kein Rechner zur Verfügung steht? Dann stelle doch bitte eine Zeichnung mit deinem Block zur Verfügung. ------------------ Mit freundlichem Gruß Udo Hübner www.CAD-Huebner.de Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Nano Mitglied
Beiträge: 179 Registriert: 25.10.2004
|
erstellt am: 01. Feb. 2009 15:04 <-- editieren / zitieren --> Unities abgeben:
|
CAD-Huebner Ehrenmitglied V.I.P. h.c. Verm.- Ing., ATC-Trainer
Beiträge: 9803 Registriert: 01.12.2003 One AutoCAD 2.5 - 2024, AutoCAD, Civil 3D, Win10/Win11
|
erstellt am: 01. Feb. 2009 16:04 <-- editieren / zitieren --> Unities abgeben: Nur für Nano
Code: (defun c:ListblkProps( / blkrefObj blkProps) (setq blkrefObj (vlax-ename->vla-object (car (entsel)))) (setq blkProps (vlax-safearray->list (vlax-variant-value (vla-GetDynamicBlockProperties blkrefObj)))) (foreach blkProp blkProps (print (vla-Get-PropertyName blkProp)) (print (vlax-variant-value (vla-get-Value blkProp))) ) )
------------------ Mit freundlichem Gruß Udo Hübner www.CAD-Huebner.de Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Nano Mitglied
Beiträge: 179 Registriert: 25.10.2004
|
erstellt am: 01. Feb. 2009 16:55 <-- editieren / zitieren --> Unities abgeben:
hallo Udo Kannst Du mir erklären, warum ich die Kanal-Breite nicht ändern kann. Habe hier ein kleines LISP. (DEFUN C:kbr() (command "_Insert" "kanal4" (setq pt (getpoint "Einfügepunkt: ")) "" "" "") (SETQ object (entlast)) (SETQ breite (GETDIST "Wert für Breite: ")) (setProperty (vlax-ename->vla-object object) "Kanal-Breite" breite) ) Gruss Nano Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
CAD-Huebner Ehrenmitglied V.I.P. h.c. Verm.- Ing., ATC-Trainer
Beiträge: 9803 Registriert: 01.12.2003 One AutoCAD 2.5 - 2024, AutoCAD, Civil 3D, Win10/Win11
|
erstellt am: 01. Feb. 2009 17:26 <-- editieren / zitieren --> Unities abgeben: Nur für Nano
Zitat: Original erstellt von Nano: hallo UdoKannst Du mir erklären, warum ich die Kanal-Breite nicht ändern kann. Habe hier ein kleines LISP. (DEFUN C:kbr() (command "_Insert" "kanal4" (setq pt (getpoint "Einfügepunkt: ")) "" "" "") (SETQ object (entlast)) (SETQ breite (GETDIST "Wert für Breite: ")) (setProperty (vlax-ename->vla-object object) "Kanal-Breite" breite) ) Gruss Nano
Was genau macht denn die Funktion setProperty? Lege bitte von dieser Funktion noch den Quelltext bei.
------------------ Mit freundlichem Gruß Udo Hübner www.CAD-Huebner.de Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Nano Mitglied
Beiträge: 179 Registriert: 25.10.2004
|
erstellt am: 01. Feb. 2009 17:41 <-- editieren / zitieren --> Unities abgeben:
Sory das ist es. (defun setProperty (vlaDynBlock sPropertyName rValue / vlaProperty) (foreach vlaProperty (vlax-safearray->list (vlax-variant-value (vla-GetDynamicBlockProperties vlaDynBlock))) (if (= (vla-get-PropertyName vlaProperty) sPropertyName) (vla-put-value vlaProperty (vlax-make-variant rValue)) ); end if ); end foreach ); end defun Nano Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Dorfy Mitglied Double-Dipl.-Ing. Bleistiftanspitzer
Beiträge: 900 Registriert: 21.07.2006 AutoCad2007, ProE, HiCad
|
erstellt am: 01. Feb. 2009 18:42 <-- editieren / zitieren --> Unities abgeben: Nur für Nano
Hi, wenn dein Block vorhanden ist und eingefügt wurde, die Schreibweise von Kanal-Breite richtig ist (groß/klein), ein Wert für Breite eingegeben wurde, dann sollte es funktionieren. Versuch mal in einer neuen Zeichnung oder starte mal ACad neu... mfg Heiko Edit: eins zwei Worte mehr was net geht bzw. Fehlermeldungen sind oft auch hilfreich [Diese Nachricht wurde von Dorfy am 01. Feb. 2009 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |