| |
 | 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: Dynamische Blöcke, Parametertyp ermitteln? (157 / mal gelesen)
|
joern bosse Ehrenmitglied Dipl.-Ing. Vermessung
    
 Beiträge: 1774 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: 06. Jan. 2025 12:56 <-- editieren / zitieren --> Unities abgeben:         
Hallo, ich habe einen dynamischen Block und möchte feststellen, ob ein Drehungsparameter vorhanden ist, damit ich den Wert auf den Winkel der eigentlichen Blockreferenz draufaddieren kann. mit der Methode getdynamicblockproperties erhalte ich folgende Werte: ; Eigenschaftswerte: ; AllowedValues (RO) = nil ; Description (RO) = "" ; PropertyName (RO) = "Winkel1" ; ReadOnly (RO) = 0 ; show (RO) = -1 ; UnitsType (RO) = 1 ; Value = 1.95188 Den Parametertyp "Drehung" bekommme ich so aber nicht, geht das gar nicht oder sehe ich den Wald vor lauter Bäumen nicht?? Bin wie immer dankbar für jeden Tipp. ------------------ viele Grüße Jörn http://www.bosse-engineering.com Der Multifilter (V 1.1) Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
cadffm Moderator 良い精神
       

 Beiträge: 22322 Registriert: 03.06.2002 Alles
|
erstellt am: 06. Jan. 2025 15:35 <-- editieren / zitieren --> Unities abgeben:          Nur für joern bosse
Frohes Neues, dynamische Parameter eines dynBlocks (hier eingeschränkt auf Drehungsparameter): Code: (defun test (blk / prms) (if (and (= :vlax-true (vla-get-isdynamicblock blk)) (= :vlax-true (vla-get-hasextensiondictionary blk)) (setq prms (mapcar '(lambda (pair) (if (and (= 360 (car pair)) (= (strcase "BLOCKROTATIONPARAMETER") (cdr (assoc 0 (entget (cdr pair))))) ) (cdr pair) ) ) (dictsearch (vlax-vla-object->ename (vla-getextensiondictionary blk)) "ACAD_ENHANCEDBLOCK" ) ) ) ) (vl-remove 'nil prms) ) )
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
joern bosse Ehrenmitglied Dipl.-Ing. Vermessung
    
 Beiträge: 1774 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: 06. Jan. 2025 16:47 <-- editieren / zitieren --> Unities abgeben:         
Hallo Sebastian, ich habe es mal ausprobiert, allerdings kommt bei (dictsearch(vlax-vla-object->ename (vla-getextensiondictionary blk)) "ACAD_ENHANCEDBLOCK" ) nur NIL zurück, die MAPCAR-Schleife wird dann nicht durchlaufen. Als blk habe ich das VLA-Objekt einer Blockreferenz eines dynamischen Blockes übergeben. Die Bespielzeichnung mit 2 Blockreferenzen habe ich angehängt. Ist das bei Dir auch so?
Code:
(defun c:test:Parametertyp:Rotate ( / obj) (if (setq obj (car(entsel))) (test:ParametertypRotate-p (vlax-ename->vla-object obj)) ) ) (defun test:ParametertypRotate-p (blk / prms) (if (and (= :vlax-true (vla-get-isdynamicblock blk)) (= :vlax-true (vla-get-hasextensiondictionary blk)) (setq prms (mapcar '(lambda (pair) (if (and (= 360 (car pair)) (= (strcase "BLOCKROTATIONPARAMETER") (cdr (assoc 0 (entget (cdr pair))))) ) (cdr pair) ) ) (dictsearch (vlax-vla-object->ename (vla-getextensiondictionary blk)) "ACAD_ENHANCEDBLOCK" ) ) ) ) (vl-remove 'nil prms) ) )
------------------ viele Grüße Jörn http://www.bosse-engineering.com Der Multifilter (V 1.1) Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
cadffm Moderator 良い精神
       

 Beiträge: 22322 Registriert: 03.06.2002 Alles
|
erstellt am: 06. Jan. 2025 20:10 <-- editieren / zitieren --> Unities abgeben:          Nur für joern bosse
>" habe einen dynamischen Block und möchte feststellen, ob ein Drehungsparameter vorhanden ist, " blk ist der Block, nicht die Blockreferenz! Beim allgemeingültigen programmieren müßte man ja zunächst herausfinden wie der (oder die) Dreh-Parameter heißen! Für die Blockreferenz, in welcher du dann den Wert auch änderst, kommt man dann so weiter
Code:
Extra mal allgemein: (defun getalldynprops (blk / pli) (mapcar '(lambda ( x ) (if (/= "Origin" (vla-get-propertyname x)) ; <- ! Achtung / Fehlerquelle falls ein Parameter "Origin" genannt wurde (setq pli (cons (strcat (vla-get-propertyname x) " - " (vl-princ-to-string(vlax-get x 'value))) pli)) ) ) (vlax-invoke blk 'getdynamicblockproperties) ) (foreach s pli (print s)) (princ) )(getalldynprops (setq blk (vlax-ename->vla-object(car(entsel)))))
oder wenn du den Parameternamen ohnehin schon kennst: (getpropertyvalue (car(entsel)) "AcDbDynBlockPropertyWinkel1")
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
joern bosse Ehrenmitglied Dipl.-Ing. Vermessung
    
 Beiträge: 1774 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: 07. Jan. 2025 11:30 <-- editieren / zitieren --> Unities abgeben:         
Hallo Sebastian, danke für Deine Ausdauer, ich habe jetzt die Blockdefinition verwendet und schon klappt es. Ich habe mir erstmal eine Liste mit Parametertyp und Parametername ausgegeben, damit komme ich in jedem Fall weiter. Code:
(defun c:test:DynPara ( / obj) (if (setq obj (car(entsel "\nDynBlockRef picken:"))) (test:DynPara:List (vla-item(vla-get-blocks(vla-get-activedocument(vlax-get-acad-object))) (vla-get-Effectivename (vlax-ename->vla-object obj))) ) ) ) (defun test:DynPara:List (vla-BlockDef / PARALIST X) (if (and (= :vlax-true (vla-get-isdynamicblock vla-BlockDef)) (= :vlax-true (vla-get-hasextensiondictionary vla-BlockDef)) (setq ParaList(mapcar '(lambda(X) (list (cdr(assoc 0 (entget(cdr X)))) (cdr(assoc 305 (entget(cdr X))))) ) (vl-remove-if (function(lambda(X)(or(/=(car X)360) (not(wcmatch (cdr(assoc 0(entget(cdr X)))) "*PARAMETER"))))) (dictsearch (vlax-vla-object->ename (vla-getextensiondictionary vla-BlockDef)) "ACAD_ENHANCEDBLOCK" ) ) ) ) ) ParaList) )
Rückgabeliste: (("BLOCKROTATIONPARAMETER" "Winkel1") ("BLOCKFLIPPARAMETER" "Umkehrstatus1") ("BLOCKFLIPPARAMETER" "Umkehrstatus2") ("BLOCKLINEARPARAMETER" "Abstand1") ("BLOCKLINEARPARAMETER" "Abstand2") ("BLOCKLINEARPARAMETER" "Abstand3"))
------------------ viele Grüße Jörn http://www.bosse-engineering.com Der Multifilter (V 1.1) Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |