• Dieses Forum ist die maschinengenerierte Übersetzung von www.cad3d.it/forum1 - der italienischen Design-Community. Einige Begriffe sind nicht korrekt übersetzt.

Werte eines dynamischen Blocks

  • Ersteller Ersteller terra
  • Erstellt am Erstellt am

terra

Guest
hi, ich frage mich, wie es durch autolisp-code möglich ist, die parameterwerte von dynamischen blöcken zu nehmen. zum beispiel habe ich einen dynamischen block, der durch eine linie repräsentiert wird, die ich dem "linearen parameter" und "ironing action" zuordnet, um die länge der linie dynamisch zu ändern. wie kann ich von autolisp solche länge zurückziehen? auf der eigenschaft des dynamischen blocks in autocad kann ich in "personalisiert" das etikett datum "länge" und den "wert angenommen", aber mit autolisp-code wie kann ich solche informationen haben? danke.
 
hallo, land.
es tut mir leid, dass ich ihnen nicht wirklich helfen konnte, aber ich abonniere ihr problem voll, weil ich es auch habe, und ich möchte direkt das dynamische schloss von lisp mit den werten der parameter "rechts" von zeit zu zeit einfügen.
ich hoffe, ich kann experten bewegen.
 
ti allego alcuni listati che tu puoi adattare secondo le die esigenze


in den meisten Fällen hat die komission eine Reihe von vorschlägen zerlegt;;;;;;;;;;;;;;;;;;;;;
;
;; modifiziert die Exploiterbedingungen Eigenschaften eines dynamischen Blocks;
;; von steve doman - Revidiert 12/14/05);
;
Syntax:
; wowei objent ein ename oder vla-objekt des dynamicen blockks ist;
;; und liste ist eine liste von gepunkteten paren von eigentumsnamen und werten;
;
;; beispiel 1: (putdbprops;
;
;; "keine regale")("breite" . 36.0;;
;
;
;) beispiel 2: (putdbprops;
;
;
;
;
;
;
;
;
;
in den meisten Fällen hat die komission eine Reihe von vorschlägen zerlegt;;;;;;;;;;;;;;;;;;;;;
(defun putdbprops (objent lst / blkprops len prraption propvalue n)
(= Name)
(setq objent (vlax-ename->vla object objent))
)
(setq blkprops)
(vlax-safearray->list
(vlax-variant wert)
(fla-getdynamicblockproperties objent)
)
)
)
(setqlen)
(Fortsetzung)
(Setq n 0)
(setq prraption (autorequisite))
(Satzq propwert (cdr prop))
(> n len)
(wish (= prrapture))
(nth n blkpropertyname)
)
(progn (vl-catch-all-apply)
vlax-put-property
(Liste (nnth n blkprops) "value" propvalue)
)
(Setq n len)
)
(Setq n (1+ n))
)
)
)
)

in den meisten Fällen hat die komission eine Reihe von vorschlägen zerlegt;;;;;;;;;;;;;;;;;;;;;
;; Routine: getdbprops;
;; zlck: eine Liste der Exploiterbestimmungen eigenschaften eines bestimmten dynamischen Blockks erhalten;
;; argument: objent, ein entitätsname oder ein vla-objekt für ein blockref(insert) ;;
;; gibt: eine Liste so:
;
;
;
;
;
;; fällt eine der eigenschaften ein sichtzustand ist es;;
;;; wert wird mit den gültigen werten zurückgeben, auch:
;
" ================================================================================================================================================================================================================================================================
;; diese Routine stammt von einem posten auf thiswamp.org, von steve doman, datiert;;
;; 12/14/2005, die aus beiträgen von herman mayfarth und tony abgelitet wurde;
;
...
;; hinweis: diese Routine nicht sichtbarkeit staan zurückgeben, wenn die;;
;; Sichtbarkeit zustandslabel wird von der standardeinstallung "visibility" geändert;;
;; zu tun: entfernen Sie sie die obige beschränkung auf sichthafte - es ist unwahrscheinlich;
; dies wird ein problem sein, aber es kann sein.
in den meisten Fällen hat die komission eine Reihe von vorschlägen zerlegt;;;;;;;;;;;;;;;;;;;;;
(verweigert getdbprops (objent / x y)
(= Name)
(setq objent (vlax-ename->vla object objent))
)
(vl-remove-if)
'(lambda (y) (= (auto y) "origin"))
(mapcar '(lambda)
(cons (vlax-get-property x "propertyname")
(wish (= "visibility" (vlax-get-property x "propertyname"))
(cons (vlax-variant-value (vlax-get-property x "value"))
(Liste)
(Mapcar)
(Funktion)
(lambda)
(vlax Varier wert y)
)
)
(vlax-safearray->list
(vlax Variantenwert (vlax-get-property xallowedvalues))
)
)
)
)
(vlax Variantenwert (vlax-get-property x "value"))
)
)
)
(vlax-safearray->list
(fla-getdynamicblockproperties objent)
)
)
)
)


in den meisten Fällen hat die komission eine Reihe von vorschlägen zerlegt;;;;;;;;;;;;;;;;;;;;;
;; Routine: getfishstates;
;; zweck: eine liste von sicht bestimmtern aus einem blockkeintrag entnehmen.
;; Argument: ent, naam des blockkeintrags;;
;; gibt: eine liste definierter statusbezeichnungen.
...
; Es genügt mir nicht zu sagen, dass wir nicht bereit sind, dies zu tun.
; wurden geändert - nicht wahrscheinlich, aber möglich;
in den meisten Fällen hat die komission eine Reihe von vorschlägen zerlegt;;;;;;;;;;;;;;;;;;;;;
(defun getvisstates(ent / dbprops visstates )
(setq dbprops)
(cond)
(null (setq visstates (assoc view dbprops))
Nil
)
(t)
)
)

in den meisten Fällen hat die komission eine Reihe von vorschlägen zerlegt;;;;;;;;;;;;;;;;;;;;;
;; Routine: ssgettbinsertsbyname;;
;;
;
;; argumente: effektname, string - der effektive name für den von uns empfohlene block.
;; gibt: eine auswahl von blockeinsätzenn, oder nil für keine gefunden.
in den meisten Fällen hat die komission eine Reihe von vorschlägen zerlegt;;;;;;;;;;;;;;;;;;;;;
(refun ssgettbinsertsbyname(effektname / sslist)
(Kousin "Block" Effektname)
Nil
(Prog.)
(setq)
ssreturn (Sadd)
Effektname (Strcase-Effektname)
)
(vlax-for blk (vla-get-blocks(vla-get-active document(vlax-get-acad object))))
(vlax-for obj blk)
(falls und
(vlax-property-p obj "effektivername")
(= Wirkung (Strcase)
)
(setq ssreturn (vlax-vla-object->ename obj) ssreturn)
)
)
)
Ssreturn
)
) wenn
)


Oppur:

; Maßnahmen eine Variable in ihrem Block

(defun chgdynprop (e prraption newval / obj v vval sal to i)

(setq obj (if (= Typ e) 'vla object) e (vlax-ename->vla object e)))
(wenn (= vlax-get-property obj 'isdynamicblock) :vlax-true)
(Prog.)
(setq v (fla-getdynamicblockproperties obj)
vval (vlax Variantenwert v)
sal (vlax-safearray->list vval)
bis (länge sal)
I 0
)
(Zwanzig)
(wenn (= vlax-get-property (nth i sal) "propertyname") prrapture)
(Prog.)
(vlax-put-property (nth i sal) "value" newval)
(Setq i to)
)
(Setq i (1+i)
)
)
)
)
)

;
...
; liett eine Variable in ihrem Block

(defun getdynprop (e prraption / obj v vval sal to i curval)
(setq obj (if (= Typ e) 'vla object) e (vlax-ename->vla object e)))
(wenn (= vlax-get-property obj 'isdynamicblock) :vlax-true)
(Prog.)
(setq v (fla-getdynamicblockproperties obj)
vval (vlax Variantenwert v)
sal (vlax-safearray->list vval)
bis (länge sal)
I 0
)
(Zwanzig)
(wenn (= vlax-get-property (nth i sal) "propertyname") prrapture)
(setq curval (nth i sal) value) (setq i
(t)
(Setq i (1+i)
)
)
)
)
(falls curval (vlax-variant-value curval))
)
 
Zuletzt bearbeitet:
wenn sie versuchen wollen, auf dynamische blöcke über vba zugreifen, hänge ich dieses beispiel an, das ich für interesse des themas entwickelt habe

ich benutzte den diamic block in der autocad bibliothek "esegonale-unita metric"

das beispiel bittet, einen punkt auszuwählen, an dem der block eingefügt werden soll, zu analysieren, ob es ein dynamischer block ist, das feld "größe" zu finden, das der dynamische parameter ist und in diesem beispiel einen wert basierend auf dem, was wir wählen.

offensichtlich wie üblich das makro starten

tools->macro->macro wählen sie das makro und geben esgui.

wählen sie den insert-punkt, wählen sie den m3-m4-wert usw. und klicken sie schließlich auf "standard".
 

Anhänge

Zuletzt bearbeitet:
danke, leute.
wieder erstaunlich.
gute ferien... sie verdienen sie in voller höhe.:finger:
 
ich wiederhole die diskussion, indem ich verweise, dass die interne funktion getdbprops in neigung geht, wenn sie einen block ohne dynamischen parameter fragen.
in der tat, wenn sie in die funktion einen "nicht dynamischen" block wechseln, mit oder ohne attribute, gibt es einen fehler mit der folgenden nachricht:"fehler: der activex-server hat einen fehler zurückgegeben: ungültiger index"vielleicht wäre es der fall, nach einer art zu suchen, um zu vermeiden, dass ein lisp-befehl blockiert wird, der die genannte interne funktion in der frage eines designs verwendet, das beide dynamische blöcke versteht und nicht...
 
hallo, ich fand sehr nützlich die funktionen lisp oben berichtet
ich habe probleme, wenn ich die funktion mit der folgenden befehlszeile anrufe:
(putdbprops(car (entsel "\nselect dynamic block: ")))))))(list(cons"flip state"(vlax-make variant 1 vlax-vbinteger))) '(altezza etichetta' . 300.0))nach auswahl des blocks meldet dieser fehler:
Fehler: keine Funktionsdefinition: vlax-Make Varianteaber gestern alles funktionierte:confused:

dank, wer mir helfen könnte
 
vielleicht vermissen sie einfach die codezeile, um in die datei lisp oder befehlszeile einzufügen:
(vl-load-com)
 

Statistik des Forums

Themen
58.521
Beiträge
499.056
Mitglieder
104.110
Neuestes Mitglied
ChristianR

Zurzeit aktive Besucher

Keine Mitglieder online.
Zurück
Oben