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

Verwendung von Entmod und Entupd zum "Update" des Wertes eines Attributs

  • Ersteller Ersteller x11start
  • Erstellt am Erstellt am

x11start

Guest
Hallo alle,
Ich mache eine Lispe, die Textattribute innerhalb von Blöcken manipuliert.
die Blöcke stellen Objekte (Säulen oder Balken) dar und haben Größe 1 x 1, so dass richtig skaliert, erlauben mir, die gewünschte Größe zu erhalten.
Leider habe ich festgestellt, dass der Skalenfaktor auch das interne Attribut auf den Block beeinflusst.... so finde ich einen Text "allargato" auf das Inverosimile, wenn er immer Wert 1 haben sollte.
Der Code, der die Breite des Attributtextes betrifft, ist 41... aber ich habe ein Problem, es wieder auf 1 zu bekommen!
Hier ist die Codescheibe, in der
ent ist das Blockauswahlset
attr1 ist sein Attribut
larat ist die Attributtextbreite, die, wenn es größer als 1 ist, die "absurd" Breite (!) durch den Wert 1 ersetzt

Alles scheint zu funktionieren
... und entmod (oder entupd) sollte die Änderung funktionieren ... aber es funktioniert nicht!

(setq attr1 (entnext (cdr))))
(setq atpr (cdr (assoc 1 attr1))); Attributwert (gültig jetzt nur eins)
(setq larat (cdr (assoc 41 attr1))); Attributtextbreite (muss höchstens 1,0 sein)
(falls (> larat 1.0) ; wenn die Attributtextbreite größer als 1 ist
(Progn; .... setzt es gleich 1...
(Setq attr1 (Substrate 41 1.0)(cons 41 larat) attr1))
(entmod attr1)
)
)

Kann mir jemand helfen?
 
Entschuldigung x11, aber warum halten Sie es auf eine Bedingung?
einen festen Wert (1) festlegen und einen Teil auf dem Teil bilden

(setq larat (cdr 41 attr1)
(setq larat2 (cons '41 1.0))
(setq attr1 (subst larat2 larat attr1))

Manchmal scheint cmq entmod/entupd nichts zu tun, aber ich kann Ihnen nicht sagen, warum.
manchmal Ich bevorzuge die Schaffung einer neuen Einheit (setq attr2 crd attr1) (entmake attr2) (entedel attr1)

Denken Sie daran, dass ich draußen bin, also habe ich die Syntax nicht getestet, ich hatte keine Lispe.
 
hier ist das Ergebnis meiner Bemühungen:
in der test.dwg-Datei gibt es 2 Säulen und 1 Balken sowohl in 2d als auch in 3d dargestellt.

Es handelt sich im Wesentlichen um Blöcke des Einheitswerts, die nach dem Abkommen mit dem ersten Buchstaben des Namens differenziert wurden: % für Blöcke 2d und & für 3d.

Diese Blöcke ermöglichen es, die Geometrie von vorgefertigten Säulen und Balken zu bauen, indem sie einfach mit einem genauen Wert auf die verschiedenen Achsen + 1 Attribut.

Auf diese Weise ist es möglich, eine 50 x 60 hohe 600 Säule zu schaffen, die diese Werte in x y und z des Blocks 2d setzt. Selbstverständlich stellt der Block 2d nur das Rechteck 50 x 60 dar, während die Höhe 600 nichts ändert. die 2d3d Lisp ersetzt 2d Blöcke mit 3d... und an dieser Stelle erlaubt der z-Achsenwert eine Höhe der Säule zu geben.

das Attribut verwendet wird, um die Geometrie des Objekts nicht zu ändern, sondern eine Quote zuzuordnen und dies gilt insbesondere für Regale und Balken. Attribute in diesen Elementen sind daher sichtbar... und das ist, was mir ein Problem in der Lispe verursachte: Einfügen des Wertes von 450 cm auf die x-Achse des Balkens .... das Attribut war "stirating" zu mir.

Ich konnte den Weg finden, diesen Wert "normalisieren" (dank der Hilfe von Kristall!) und jetzt kann ich einfach meine 2d Design in 3d und umgekehrt transformieren.
Beachten Sie, dass, wenn der Befehl Objekte ein bisschen 2d und ein wenig 3d findet, fragt, was zu tun... während Blöcke, die nicht mit % beginnen oder mit & werden ignoriert.

Ich weiß, dass dies eine sehr "militärische" Verwendung für meine Industrie ist, aber ich denke, es könnte jemand helfen, etwas Inspiration zu geben.

in der lisp ist auch geladen message.lsp, die für die Anzeige von Vollbild-Anforderungsnachrichten verantwortlich ist.... für die "cecati" wie die Unterzeichneten.

die 2d in 3d und umgekehrt zu verwandeln... und neue Anwendungen zu erfinden!
 

Anhänge

Schade, es tut mir nichts. .
sowohl mit 2d3d als auch mit Durchfluss und mit Wahl
Es gibt jedoch keine Fehlermeldung, nicht einmal die "undefinierte Funktion".
einfach und als würde ich nichts geben.
 
Vielleicht habe ich verstanden: message.lsp lädt auch eine Lispe und vielleicht nicht finden es "beaming!". In letzter Zeit habe ich versucht, die Lispe auf Module zu teilen... aber dann muss ich sie offenbar bereitstellen, wenn ich sie auf dem Forum teile!
versuchen, den Nachrichtenabschnitt zu deaktivieren (Befehl x11:message) ... und sehen, ob es funktioniert. dann, wenn ich nach Hause zurückkehre, werde ich das fehlende Formular zur Verfügung stellen!
 

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