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

Fügen Sie einen Block mit Attributen mit "entmake" ein

teoz

Guest
hallo alle,
ich möchte blöcke einfügen, denen attribute zugeordnet sind, mit relativen standardwerten, mit dem befehl "entmake", den ich derzeit nicht ausführen kann.

angenommen, mein block wird "test" genannt, dem ein attribut zugeordnet ist, sichtbar und editierbar, genannt "gegeben". der code, den ich für seine einfügung verwendet, ist:

(entmake (cons 0 "insert") (cons 2 "test") (list 10 0 0 0 0))

an diesem punkt autocad hat den block "test" auf den ursprung der achsen ohne attribut eingefügt. was fehlt in meinem code, so dass das attribut auch eingefügt wird, wie es mit "_insert" geschieht?

bye und danke
matteo.
 
sie machen verwirrung zwischen der definition des blocks und der einfügung desselben.
es ist der testblock, der die attribute enthalten muss, sie können sie nicht in der eingabephase hinzufügen.

gutes abendessen, bye
 
ich habe diesen teil des codes von einer lisp extrapoliert, die ich tat, um topographische punkte mit attributen einzufügen, siehe in der hilfe die bedeutungen der verschiedenen dxf-codes, um es anzupassen.
selbstverständlich muss der block bereits definiert werden.

:smile:


Code:
(entmake (list (cons 0 "insert")(cons 100 "acdbentity")(cons 67 0)(cons 410 "model")
(cons 8 "riga_7")(cons 100 "acdbblockreference")(cons 66 1)(cons 2 num_b)
(cons 10:bb)(cons 41(1)cons 42(1)cons 43(1))

(entmake (list (cons 0 "attrib")(cons 100 "acdbentity")(cons 8 "riga_7")
(Cons 100 "acdbtext")(Cons 10 (list 0.4 0.5 0))(Cons 40 0.4)(Cons 41 0.85)
(cons 1 r6) (cons 7 "punto") (cons 100 "acdbattribute")
(cons 2 "descr") (cons 70 1) (cons 39 0)

(entmake (list (cons 0 "attrib")(cons 100 "acdbentity")(cons 8 "punto-numero)
(Cons 100 "acdbtext")(Cons 10 (list 0.4 0.5 0))(Cons 40 0.4)(Cons 41 0.85)
(cons 1:r7) (cons 7 "punto") (cons 100 "acdbattribute")
(cons 2 "num_p") (cons 70 1) (cons 39 0)

(entmake (list (cons 0 "seqend")))
 
danke.
ihr code kommt zurück nützlich, um zu beweisen, dass es möglich ist hinzufügen Eigenschaften zu einem block während seiner einführung.

agenomme, Hut bereits ein block definiert dessen name ist "prüfverfahren" und dass es aus einem rechteck und einem attribut, sichtbar und
editierbar, genannt "gegeben", mit Standardwert die Saite "versuchen".

sehen, was mit Ihrem Code passiert, angepasst an meinen "test" Block:


(cons 100 "acdblockreference")(cons 67 0)(cons 410 "model")(cons 8 "riga_7")(cons 100 "acdbblockreference")(cons 66 1)
(cons 2 "test") (cons 10 (list 100 100 0)) (cons 41 1) (cons 42 1) (cons 43 1))

(cons 8 "riga_7")(cons 100 "acdbtext")(cons 10 (list 0.4 0.5 0)))))(cons 40 0.4)(cons 41 0.85)
(cons 1 "value per descr") (cons 7 "point") (cons 100 "acdbattribute")
(cons 2 "descr") (cons 70 1) (cons 39 0)

(entmake (cons 0 "attrib")(cons 100 "acdbentity")(cons 8 "point-number")(cons 100 "acdbtext")(cons 10 (list 0.4 0.5 0)))))))))(cons 40 0.4)(cons 41
0,8 %
(cons 1 "keine Daten") (cons 7 "point") (cons 100 "acdbattribute")
(cons 2 "num_p") (cons 70 1) (cons 39 0)

(entmake (cons 0 "seqend"))


die Linien, die so viel sät die Einführung des Blocks "test" meine schwanz 2 neue Attribute, die nicht gefunden haben
definition des blocks selbst
, just con: decr und num _ p. des attributs "gegeben" gibt es keine spur!




was ich verstehen möchte, ist, wie man einen block mit seinen attributen einfügen kann, die in seiner definition enthalten sind, indem man
"entmake" ohne "insert". in der praxis, da ich die folgende zeile "übersetzen" kann:

(befehl "_.-insert" "test" "100,100,0" "1" "0")

mit "entmake"? (bitte beachten sie, dass mit der obigen codezeile der "test" block und die in seiner definition enthaltenen attribute eingefügt wird).

danke für ihre geduld:

hi.
matteo.
 
das einfügen mit entmake, im gegensatz zum einfügen durch befehl, auch die berechnung der position der attribute, ist daher nicht so einfach zu bedienen.
im folgenden beispiel, angepasst an ihren "test" block, wird das attribut in position 100,100 eingefügt.
Code:
(entmake (list (cons 0 "insert")(cons 100 "acdbentity")(cons 67 0)(cons 410 "model")
(Cons 8 "riga_7") (Cons 100 "acdbblockreference") (Cons 66 1) (Cons 2 "test")
(cons 10 (list 100 100 0))(cons 41 1) (cons 42 1) (cons 43 1))

(entmake (list (cons 0 "attrib")(cons 100 "acdbentity")(cons 8 "riga_7")
(Cons 100 "acdbtext")(Cons 10 (list 100 100 0))(Cons 40 0.4)(Cons 41 0.85)
(cons 1 "prov") (cons 7 "arial") (cons 100 "acdbattribute")
(cons 2 "dato") (cons 70 8)(cons 39 0)


(entmake (list (cons 0 "seqend")))
 
der einsatzbefehl ein set aus einem gliederung zur definition des blocks + eins kopie der definition jedes vorliegenden attributs.
entmake ermöglicht es ihnen, den link zur definition durch hinzufügen von attributen zu verschmelzen, die nicht notwendigerweise in der definition des blocks selbst enthalten sind.
deshalb können sie einen block einfügen, indem sie attribute zum flug hinzufügen, operation, die ich nie erlebt hatte.
wenn sie also nicht die kopie des in der definition des blocks enthaltenen attributs hinzufügen, finden sie sie nicht im eingefügten block.
das problem ist, dass, wenn sie einen block mit attributen einfügen möchten, oder sie wissen, wie sie attribute nennen oder sie müssen die definition des blocks scannen und nach den notwendigen informationen suchen.
das beispiel von gp ist, wie viel es dazu dient, die definitionen des blocks zu kennen, obwohl die position des einführpunktes es in jedem fall berechnen oder als verschiebung relativ zum einführpunkt des blocks einstellen sollte.

hallo und danke für die reflexion, dass du mich dazu gezwungen hast.
 
vielen dank für die hilfe: lächeln:

leider auf dem netz fand ich viele informationen, wie man blöcke mit Entmake und wie man "extra"-attribute beim einfügen des blocks selbst hinzufügen, aber sehr wenig beim einfügen von blöcken mit den attributen seiner definition.
vielleicht ist dies ein signal, dass "entmake" nicht das richtige werkzeug ist, um blöcke in meine weise einzufügen :frown:

letztlich, wenn ich entmake verwenden möchte, um einen block einzufügen, den ich tun muss, wie rpor66 sagt: scannen sie den block def und kopieren sie die attribute, die ich in ihm finde und dann fügen sie sie zum einfügen des blocks. in der tat ist es ein wenig mühsam.

ich glaube, dass ich am ende den befehl (vla-insertblock) verwenden werde, obwohl es, wenn ich ein auge auf die dokumentation gebe, mehr informationen benötigt als "-insert".

gibt es weitere vorteile, neben der effizienz, bei der verwendung der funktion (vla-insertblock)?
 
benötigt die entmake-funktion keine lawine von informationen?

allerdings hat gemäß mir (vla-insertblock) neben seiner geschwindigkeit zwei grundlegende vorteile, sowie alle aktivenx-funktionen.
die erste ist, dass sie die vla-insertblock funktion auch verwenden können, um einen block in einen anderen block einzufügen, direkt, ohne den betit befehl.
die zweite, ich muss rand für die anwendung sagen, die getan werden kann, ist die unmöglichkeit, die verschiedenen befehle und entxxx funktionen und ssget in der sogenannten "callbacks-funktion" oder reaktorrückruf-funktionen zu verwenden, dann lassen mich die bekanntesten schnittstellen und vielleicht mehr "easy". an diesem punkt muss ich activex-funktionen verwenden.

zum einfügen von attributen im block können sie auch die vla-addattribute funktion verwenden, aber hier würde ein weiteres kapitel öffnen. .
 

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