Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  Rund um AutoCAD
  Dyn. Block - Breite/Länge mittels Lisp beim Einfügen übergeben...

Antwort erstellen  Neues Thema erstellen
CAD.de Login | Logout | Profil | Profil bearbeiten | Registrieren | Voreinstellungen | Hilfe | Suchen

Anzeige:

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen nächster neuer Beitrag | nächster älterer Beitrag
  
Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte
Autor Thema:  Dyn. Block - Breite/Länge mittels Lisp beim Einfügen übergeben... (1417 mal gelesen)
zimmernagel
Mitglied
Techniker


Sehen Sie sich das Profil von zimmernagel an!   Senden Sie eine Private Message an zimmernagel  Schreiben Sie einen Gästebucheintrag für zimmernagel

Beiträge: 67
Registriert: 24.09.2003

Windows 8.1 64-bit, 16GB, Autodesk Infrastructure Design Suite Premium 2016, nvidia K600, 2 x 24" Monitore

erstellt am: 29. Jun. 2015 22:07    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities


ML-Demo.zip

 
Hallo!

Ich habe folgendes Problem und hänge beim Lisp-Einfügen von einem dyn. Mattenblock bei der Eingabe der Zielbreite/-höhe der Matte fest...
Der Mattenblock wird in "m" gezeichnet, wobei ich jetzt nicht weiss, wie ich diese Breite/Höhe direkt beim Einfügen mittels Lisp (Abarbeitung von einer ext. Text-Eingabeliste mit versch. Breiten/Höhen) für den dyn. Block übergeben kann!?
Momentan ist es so, dass ich mittels "-einfüge" den Block einzeichnen lassen kann mit den normalen Attributen, die noch nichts mit der Breite/Höhe zu tun haben (fast!).
Wie kann ich dem Block beim Einfügen sagen, dass er nicht die Standardbreite/höhe vom dyn. Block übernehmen soll (6m/2.30m), sondern z.b. lt. ext. Liste z.b. nur einmal 2m breit und 5 m hoch wäre???
Zusätzlich zu diesem Schmankerl sollte er die Breite/Längenattribute im dyn. Block direkt mitändern, allerdings diese in cm anzeigen, also dann 200 / 500... (wobei ich das mittels Lisp direkt ändern könnte...) Das müsste mit einer direkten Verlinkung inkl. Umrechnung erfolgen - wenn sowas überhaupt im dyn. Block geht...!???

Das ist mein 1. Versuch mit dyn. Blöcken, auch wenn ich AutoCAD schon seit 2.6 kenne, ich mir aber immer teilweise mit Lisp geholfen habe... Jetzt wollte ich mal die dyn. Dinger zu Hilfe nehmen... *UFF* *STÖHN*

Vielen Dank für die regen Interpretationsvorschläge/Schelte/Lösungen/Diffamierungen..., usw...     

------------------
Bis dann,
  Arwed Fränken

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Kuschelfee
Mitglied
Bauzeichnerin


Sehen Sie sich das Profil von Kuschelfee an!   Senden Sie eine Private Message an Kuschelfee  Schreiben Sie einen Gästebucheintrag für Kuschelfee

Beiträge: 186
Registriert: 07.05.2007

Windows 10 Pro
AutoCAD 2022.1.3
Soficad 2022-4
Advance Steel 2022.1.3

erstellt am: 14. Jul. 2015 20:43    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für zimmernagel 10 Unities + Antwort hilfreich

Hallo,

zur Zeit beschäftige ich mit einer ähnlichen Funktion und habe dafür eine Lisp gebastelt die mich nach den Parametern fragt und diese an den Block übergibt.
Hier eine für deinen Block umgeschriebene Version.

Code:

; K. Kubat 2015
;
; Aufrufen mit Matte fügt Block "ML-allgemein" ein
; Block sollte sich schon in der Zeichnung befinden.
; Wenn Blockverzeichnis im AutoCAD Suchpfad enthalten,
; dann wird der Block auch eingefügt wenn er nicht
; in der Zeichnung Referenziert ist


(defun setProperty (vlaDynBlock sPropertyName rValue / vlaProperty)
  (foreach vlaProperty (vlax-safearray->list (vlax-variant-value (vla-GetDynamicBlockProperties vlaDynBlock)))
    (if (= (vla-get-PropertyName vlaProperty) sPropertyName)
      (vla-put-value vlaProperty (vlax-make-variant rValue))
    )
  )
)

(DEFUN C:matte()

(command "-Einfüge" "ML-allgemein" (setq pt (getpoint "Einfügepunkt: ")) "" "" "")
  (SETQ object (entlast))

  (SETQ Breite (GETDIST "\nBreite: "))
    (SETQ Laenge (GETDIST "\nLänge: "))

  (setProperty (vlax-ename->vla-object object) "Breite" Breite)
    (setProperty (vlax-ename->vla-object object) "Länge" Laenge)


  )


In Dynamische Blöcken ist sehr viel mehr möglich.
Für dein Problem mit dem Attribut empfehle ich dir die AutoCAD Schriftfeldfunktion. Hierfür im Blockeditor den Vorgabetext des Attributes Editiere. Mit rechter Maustaste auf Schriftfeld einfügen, anschließend oben links auf Objekt, danach Blockplatzhalter hier dann den Parameter für Länge bzw. Breite anwählen. Bei Genauigkeit Anzahl der Kommastellen angeben und ggf. bei zusätzliches Format den Umwandlungsfaktor entsprechend der Zeichnungseinheit (Einheit m Text mm = 1000) angeben.
Der neue Vorgabetext erscheint nur bei NEU eingefügten Blöcken ggf. muss der Block bei Änderungen an Attribute in der Zeichnung Synchronisiert werden(BATTMAN).
Noch ein Tipp:
Wenn alle Attribute in den Eigenschaften auf Vorgabe eingestellt sind erscheint keine Abfrage beim einfügen.

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Anzeige.:

Anzeige: (Infos zum Werbeplatz >>)

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen

nächster neuerer Beitrag | nächster älterer Beitrag
Antwort erstellen


Diesen Beitrag mit Lesezeichen versehen ... | Nach anderen Beiträgen suchen | CAD.de-Newsletter

Administrative Optionen: Beitrag schliessen | Archivieren/Bewegen | Beitrag melden!

Fragen und Anregungen: Kritik-Forum | Neues aus der Community: Community-Forum

(c)2023 CAD.de | Impressum | Datenschutz