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

Attribut zu einem bestehenden Block hinzufügen

  • Ersteller Ersteller 77marco77
  • Erstellt am Erstellt am

77marco77

Guest
Hallo.
Ich habe diesen Code gefunden:
HTML:
(defun c:add$ ( / ss i blk blks def attobj)
(und
(setq ss (ssget '((0. "Insert"))))
(Setq i (Länge ss)
(while (> i 0)
(setq blk (cdr (assoc 2 (entget))))
(falls (nicht (vl-Position blk blks)) (setq blks (cons blk blks)))
)
)
(foreach blk blks
(setq def (vla-item (vla-get-blocks (vla-get-activedocument (vlax-get-acad-object)))))
(setq attobj
(vla-addattribute def
8)
acattributribumodelockposition
"Eintrag #"
(vlax-3d-point 72 84)
"Preis\u+0020"
"100"
)
)
(vlax-put attobj 'alignment acalignmentmiddle) ;; 4
(Befehl "_.attsync" "_n" blk)
)
(princ)
)
(vl-load-com) (princ)
Wer:und tut, was, d.h., addieren Sie das Attribut mit Tag Preis, geben Sie die Punktnachricht # und Inhalt 100 zu einem oder mehreren ausgewählten Blöcken. das Attribut wird am Punkt des Einfügens des Blocks (also oft knapp über dem Design) mit halbzentrierter Rechtfertigung eingefügt.

was ich verstehen möchte (und ändern können) sind:
  1. die Rechtfertigung: Ich möchte wissen, was und wo man von Mitte, halb links und halb rechts schreibt
  2. der Ort: wir sagen, dass (0.0) der Einschubpunkt des Blocks ist, den ich z.B. der (0,-10) Designeinheit hinzufügen möchte.
Danke im Voraus, wer mir helfen wird
 
(vlax-3d-point 72 84)
die Koordinaten relativ zum Einführpunkt des Blocks, in dem das Attribut platziert wird.
Bearbeiten Sie die 84 in 74 und erhalten Sie Ihre -10 auf y.
 
Dank für die Antwort, Ich versuchte, aber es funktioniert nicht, das Attribut wird immer auf dem Basispunkt des Blocks platziert...
 
(vlax-put actbj 'Ausrichtung acalignmentmiddle); 4

wenn Sie die Zeile löschen, wird das Attribut in Koordination gesetzt, ändert aber nicht den Ausrichtungspunkt.
mit _battman auf jeden Fall lösen.
 
so sollte es gehen, um die Ausrichtung zwischen, müssen Sie eine vla-move hinzufügen.
Code:
(defun c:add$ ( / ss i blk blks def attobj)
(und
(setq ss (ssget '((0. "Insert"))))
(Setq i (Länge ss)
(while (> i 0)
(setq blk (cdr (assoc 2 (entget))))
(falls (nicht (vl-Position blk blks)) (setq blks (cons blk blks)))
)
)
(foreach blk blks
(setq def (vla-item (vla-get-blocks (vla-get-activedocument (vlax-get-acad-object)))))
(setq attobj
(vla-addattribute def
8)
acattributribumodelockposition
"Eintrag #"
(vlax-3d-point 72 84)
"Preis\u+0020"
"Pippo"
)
)
(vlax-put attobj 'alignment acalignmentmiddle) ;; 4
(vla-move attobj (vlax-3d-point 0 0 0)(vlax-3d-point 0 -10))
(Befehl "_.attsync" "_n" blk)
)

(princ)
)
(vl-load-com) (princ)
 
Zuletzt bearbeitet:
so sollte es gehen, um die Ausrichtung zwischen, müssen Sie eine vla-move hinzufügen.
Code:
(defun c:add$ ( / ss i blk blks def attobj)
(und
(setq ss (ssget '((0. "Insert"))))
(Setq i (Länge ss)
(while (> i 0)
(setq blk (cdr (assoc 2 (entget))))
(falls (nicht (vl-Position blk blks)) (setq blks (cons blk blks)))
)
)
(foreach blk blks
(setq def (vla-item (vla-get-blocks (vla-get-activedocument (vlax-get-acad-object)))))
(setq attobj
(vla-addattribute def
8)
acattributribumodelockposition
"Eintrag #"
(vlax-3d-point 72 84)
"Preis\u+0020"
"Pippo"
)
)
(vlax-put attobj 'alignment acalignmentmiddle) ;; 4
(vla-move attobj (vlax-3d-point 0 0 0)(vlax-3d-point 0 -10))
(Befehl "_.attsync" "_n" blk)
)

(princ)
)
(vl-load-com) (princ)
Vielen Dank!
Ich muss zugeben, dass ich mich wie ein Kind fühle, das das Verschwinden der Freiheitsstatue von David Kupferfield beobachtet: klein und ohne Worte:): giggle:.
 
(vlax-put actbj 'Ausrichtung acalignmentmiddle); 4

wenn Sie die Zeile löschen, wird das Attribut in Koordination gesetzt, ändert aber nicht den Ausrichtungspunkt.
mit _battman auf jeden Fall lösen.
danke ich versuchte und es würde funktionieren, aber es für 6358 Blöcke zu tun, wird es ein wenig lang, dank aber für die Idee und Hilfe!
 
so sollte es gehen, um die Ausrichtung zwischen, müssen Sie eine vla-move hinzufügen.
Code:
(defun c:add$ ( / ss i blk blks def attobj)
(und
(setq ss (ssget '((0. "Insert"))))
(Setq i (Länge ss)
(while (> i 0)
(setq blk (cdr (assoc 2 (entget))))
(falls (nicht (vl-Position blk blks)) (setq blks (cons blk blks)))
)
)
(foreach blk blks
(setq def (vla-item (vla-get-blocks (vla-get-activedocument (vlax-get-acad-object)))))
(setq attobj
(vla-addattribute def
8)
acattributribumodelockposition
"Eintrag #"
(vlax-3d-point 72 84)
"Preis\u+0020"
"Pippo"
)
)
(vlax-put attobj 'alignment acalignmentmiddle) ;; 4
(vla-move attobj (vlax-3d-point 0 0 0)(vlax-3d-point 0 -10))
(Befehl "_.attsync" "_n" blk)
)

(princ)
)
(vl-load-com) (princ)
noch eine kleine Soda (vielleicht... )
die Texthöhe auf 2 gesetzt (statt 8), können Sie einen Breitenfaktor auf 0,9 eingeben oder später mit einer anderen Lispe? (Ich glaube, ich habe es schon)
 
Code:
(defun c:add$ ( / ss i blk blks def attobj)
(und
(setq ss (ssget '((0. "Insert"))))
(Setq i (Länge ss)
(while (> i 0)
(setq blk (cdr (assoc 2 (entget))))
(falls (nicht (vl-Position blk blks)) (setq blks (cons blk blks)))
)
)
(foreach blk blks
(setq def (vla-item (vla-get-blocks (vla-get-activedocument (vlax-get-acad-object)))))
(setq attobj
(vla-addattribute def
8)
acattributribumodelockposition
"Eintrag #"
(vlax-3d-point 72 84)
"Preis\u+0020"
"Pippo"
)
)
(vlax-put attobj 'alignment acalignmentmiddle) ;; 4
(vla-move attobj (vlax-3d-point 0 0 0)(vlax-3d-point 0 -10))
(vla-put-scalefactor attobj 0.9)
(Befehl "_.attsync" "_n" blk)
)
(princ)
)
(vl-load-com) (princ)
 
Dies war eine gute Gelegenheit, etwas Neues zu lernen, ich spreche mit confutatis.
Ich habe gesehen, dass es nicht möglich ist, das Attribut zu bewegen, die Eigenschaft Textausrichtpunkt auf zwei Arten zu ändern:
(vlax-put-property actbj 'textalignmentpoint (vlax-3d-point 0 -10 0))
(vla-put-textalignmentpoint actbj (vlax-3d-point 0 -10 0))

gleiche Sprache für Skalierer
(vlax-put-property actbj 'scalefactor 0.9)
(vla-put-scalefactor actbj 0.9)

in der Definitionsphase des Attributs einfach die Koordinaten 0.0.0 anzeigen
später ändern Sie den Textausrichtpunkt

Grüße
 

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