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

Extrahieren des Wertes eines Blockattributs

  • Ersteller Ersteller Papao
  • Erstellt am Erstellt am

Papao

Guest
Bye to all,
existiert eine Möglichkeit, den Wert eines innerhalb eines Blocks enthaltenen Attributs zu starten, um es einer Variable zuzuordnen?
der Name des Blocks und Attributs sind immer gleich, aber der Block enthält andere Attribute, die ich nicht kümmern.

Was ist die Anweisung, die den Wert des im "etc"-Block enthaltenen "formierten" Attributs extrahiert?
Danke.
 
Code:
; Liste der sichtbaren Attribute (tag . value) n= Einheitsname
(defun fnlistatag(n / Sitztyp und Schleifenliste obbloc v ntag txt)
(setq Sitzt (cdr (assoc 66 (entget n))))
(setq type (cdr (assoc 0)))
(wenn (und = Sitz 1) (= Typ "Insert"))
(Progn)
(setq n (entnext n)
(Sectq und (entget n))
(Setq Loop nil)
(while (/= Schleife "seqend")
(setq ntag (cdr (assoc 2 e)))
(setq txt (cdr)
(setq obbloc (vlax-ename->vla-object n))
(setq v (vlax-get-property obbloc 'visible)
(if (= v :vlax-true)
(Setq-Liste (list append (list)))
)
(setq n (entnext n)
(Sectq und (entget n))
(Setq Schleife (cdr (assoc 0 e)))
)
)
)
Liste
)
(setq listtag)
die Liste aller Attribute der Einheit n

(setq txt (cdr (assoc "format" listtag)))
Format Attributwert
 
super, danke rpor66,
Jetzt versuche ich zu verstehen, wie man seinen Code so einstellt, dass er mit meinem Dialog kann:
Ich muss dies tun, damit ich eine zweite Lise nach dem erhaltenen Ergebnis reißen kann, beispielsweise:
wenn txt zurückkehrt "1" Ich möchte die Routine "a1.lsp" sonst starten
wenn es wieder "2" muss starten "a2.lsp"
"3" startet "a3.lisp" usw.

Jetzt hoffe ich, dass es funktioniert. .
Haben Sie einen Rat?
 
Code:
(cond)
(sing)
(Last "a1")
; Einfügen des Befehls in die Datei a1.lsp
)
(sing)
(Last "a2")
; Einfügen des Befehls in die Datei a2.lsp
)
;etc...
)
 
Ich kann es einfach nicht schaffen. .

Ich dachte, Ihre erste Liste war eine Funktion und dann eine Sub, die in meiner Hauptliste erinnert werden, aber schließlich bekomme ich einen " fehlenden Argumenten" Fehler

Können Sie mir eine Hand geben, um es richtig einzurichten?
 
Code:
(defun c:estraiatt(/ sel n und type listtag txt)
(setq sel (entsel "\check block: ")
(Sectq n (Auto sel)
(Sectq und (entget n))
(Setq-Typ (cdr (assoc 0 e)))
(wenn (= Typ "Insert")
(Progn)
(setq listtag)
(setq txt (cdr (assoc "format" listtag)))
(alert txt)
(cond)
(sing)
(Last "a1")
; Einfügen des Befehls in die Datei a1.lsp
)
(sing)
(Last "a2")
; Einfügen des Befehls in die Datei a2.lsp
)
;etc...
)
)
)
)
in diesem Beispiel wählt der Block ihn einzeln aus.
Sie können eine Auswahlgruppe erstellen und durch eine Schleife die verschiedenen Lasten in Folge ausführen.
 
der Blockname ist immer der gleiche (etc) und auch das Attribut (Format), ich will es nicht jedes Mal auswählen, aber ich möchte es direkt im Code anrufen.
Dies hilft mir in dem Moment, in dem ich in Batch (durch ein Skript) alle Dateien, die in einem Ordner enthalten sind.

Jedenfalls danke für Ihre Geduld, der Code funktioniert und ich versuche, von mir zu kommen
 
Zuletzt bearbeitet:
Code:
(defun c:estrairanno tutteatt(/ sel n und type listtag txt c)
(setq sel (ssget "x" (cons 0 "insert") (cons 2 "etc"))))
(falls)
(Progn)
(Setq c 0)
(Repeat)
(Setq n (Name sel c))
(Sectq und (entget n))
(Setq-Typ (cdr (assoc 0 e)))
(setq listtag)
(setq txt (cdr (assoc "format" listtag)))
(alert txt)
(cond)
(sing)
(Last "a1")
; Einfügen des Befehls in die Datei a1.lsp
)
(sing)
(Last "a2")
; Einfügen des Befehls in die Datei a2.lsp
)
;etc...
)
(Setq c (1+c)
)
)
)
 
Ich wollte nur hier raus. !
Dann sah ich, dass du es schon getan hast!
Vielen Dank, es funktioniert super!
 

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