Hot News aus dem CAD.de-Newsletter:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  Rund um AutoCAD
  Schriftfeld Parameter per _pick definieren

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
Autor Thema:   Schriftfeld Parameter per _pick definieren (1283 mal gelesen)
WEIM
Mitglied
Bauzeichner

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

Beiträge: 3
Registriert: 27.08.2015

ACAD Plant Suite 2015

erstellt am: 06. Okt. 2015 12:03    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


BP-Bsp.dwg

 
Hallo miteinander,

Ich bin relativ neu in der Community und habe auch nach längerem stöbern nichts gefunden das meinem Problem ähnlich sieht.
Daher hoffe ich Ihr könntet mir eventuell helfen.

Folgendes ich versuche eine Block zu erstellen der im Grunde 3 Parameter hat

1. Der erste ist einfach ein Namensparameter der beim Einfügen des Blocks manuell eingegeben werden soll. -> Kein Problem
2. Der zweite Parameter soll mir die Fläche einer von mir (nach einfügen des Blockes) Ausgewählten Polylinie in einen Text schreiben.
Die Formel dazu im Blockeditor ist folgende
-> %<\AcObjProp.16.2 Object(%<\_ObjId 8796083887232>%,1).Area \f "%lu2%pr2%ct8[0.0001]">%

Dies funktioniert auch solange ich mich im Blockeditor befinde, allerdings möchte ich die Polylinie ja außerhalb des Blockeditors in meiner Zeichnung auswählen..

Jetzt meine erste Frage ist dies überhaupt möglich oder befinde ich mich komplett auf dem Holzweg?

und der 3te Parameter sollte mir dir Prozentuale Angabe mehrerer von mir gewählten Polylinien(diese natürlich addieren) im Gegensatz zu der Fläche im 2ten Parameter anzeigen.

Um das alles visuell zu verständlichen die Angefügte Zeichnung...

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

cadffm
Moderator
良い精神




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

Beiträge: 19034
Registriert: 03.06.2002

System: F1
und Google

erstellt am: 06. Okt. 2015 13:11    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 WEIM 10 Unities + Antwort hilfreich

Du befindest dich auf dem Holzweg.
1. Ist dir die ObjektID einer späteren Polylinie nicht bekannt(also kannst du den Schriftfeldcode überhaupt nicht angeben?
2. Gehört das Schriftfeld (eigentlich) nicht in einen Block, sondern in ein Attribut einer Blockreferenz.

Zum Letzten deiner 3 Parameter: Wo ist denn dabei dein Problem wo man helfen kann?
Schriftfeld FORMEL, darin kannst du Schriftfelder(Objekt) erzeugen und +-*/ einsetzen(und weitere math. Funktionen), was hast du probiert, wo hängst du?


Ich würde für beides ein kleines Lisp vorschlagen, welches eine BlockRef einfügt, man die anderen Objekte anklickt und dann den Schriftfeldcode im Attribut der Blockreferenz erstellt.

1. Ok
2. http://forum.cad.de/foren/ubb/Forum54/HTML/032170.shtml
3. http://forum.cad.de/foren/ubb/Forum54/HTML/028781.shtml 

------------------
CAD on demand GmbH - Beratung und Programmierung rund um AutoCAD

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

WEIM
Mitglied
Bauzeichner

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

Beiträge: 3
Registriert: 27.08.2015

ACAD Plant Suite 2015

erstellt am: 06. Okt. 2015 17:59    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

1. Genau da ist das Problem, deshalb möchte ich diesen Wert erst nach dem Einfügen des Blocks in meine Zeichnung per anklicken der Polylinie definieren. (Ist auch mein Problem bei Parameter 3)

Ich möchte den Block/Die Formeln/Attribute garnicht mehr anpacken nachdem der Block eingefügt wird...

Im großen und ganzen stelle ich mir das so vor..

Zeichnung aufmachen -> Block einfügen -> Einfügepunkt aussuchen -> Dann Frägt mich AutoCAD welchen namen der Block haben soll "123456" eintippen.. und dann möchte ich per Mausklick auf die Polylinie die Fläche für den 2ten Parameter in Ha (Zeicheneinheit m) bestimmen...
Die nächste Aufforderung sollen nur noch die Flächen sein die ich addieren und dann deren Prozentualwert anzeigen lassen möchte (Parameter3) ebenfalls per anklicken der Polylinie.

Mit einer lisp aus Polylinien die Flächen auszulesen hab ich auch schon geschafft allerdings ist die Lisp nicht mit dem Block oder dem Schriftfeld im Block verknüpft was ich auch nicht hinbekomme..

Zudem sind diese Blöcke die sich "Berechnungspunkte" nennen genormt..

Du sagtest du würdest mir eine Lisp dafür Vorschlagen, schön und gut, nur existiert diese nach meinen bisherigen 6 monatigen Recherchen nicht. Und ich kann leider selbst keine schreiben 

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

cadffm
Moderator
良い精神




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

Beiträge: 19034
Registriert: 03.06.2002

System: F1
und Google

erstellt am: 07. Okt. 2015 04:02    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 WEIM 10 Unities + Antwort hilfreich

Wenn du weiterhin so Ausdauer hast wie zuvor, dann würdest du es sicher schaffen das Beispiellisp anzupassen.
Ansonsten gibt es auch noch Dienstleister die sowas umsetzen können.
In meinem Urlaub nur mit Handy bewaffnet als Forenhilfe bzw. als Komplettlösung kann ich dir ab hier nicht weiterhelfen.

Das Lisp zeigt wie man die ID der Objekte ermittelt und eine Zeichenkette(den Code für das Schriftgeld) zusammensetzt mit strcat.

Aber es ist sicher kein Klacks ohne Vorkenntnisse mit Schriftfeldern und den Lispfunktionen, das darf man ruhig sagen an der Stelle.

------------------
CAD on demand GmbH - Beratung und Programmierung rund um AutoCAD

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

WEIM
Mitglied
Bauzeichner

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

Beiträge: 3
Registriert: 27.08.2015

ACAD Plant Suite 2015

erstellt am: 07. Okt. 2015 15:01    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

Also für den Parameter 2 hab ich die Lisp soweit funktionsfähig.

(defun Get-ObjectIDx64 (obj / util)
  (setq util (vla-get-Utility (vla-get-activedocument (vlax-get-acad-object))))
  (if (= (type obj) 'ENAME)(setq obj (vlax-ename->vla-object obj)))
  (if (= (type obj) 'VLA-OBJECT)
    (if (> (vl-string-search "x64" (getvar "platform")) 0)
      (vlax-invoke-method util "GetObjectIdString" obj :vlax-False)
      (rtos (vla-get-objectid obj) 2 0)
    )
  )
)
(defun c:PA2 (/ entObject entObjectID InsertionPoint ad)
  (vl-load-com)
  (setq entObject (vlax-ename->vla-object(car (entsel)))
        entObjectID (Get-ObjectIDx64 entObject)
        InsertionPoint (vlax-3D-Point (getpoint "Select point: "))
        ad (vla-get-ActiveDocument (vlax-get-acad-object))
  )
  (vla-addMText (if (= 1 (vla-get-activespace ad))
    (vla-get-modelspace ad)
    (if (= (vla-get-mspace ad) :vlax-true)
      (vla-get-modelspace ad)
      (vla-get-paperspace ad)
    )
  )
  InsertionPoint 0.0 (strcat
  "%<\\AcObjProp Object(%<\\_ObjId "
  entObjectID
  ">%).Area \\f \"%lu2%pr2%ct8[0.0001]\">%"
  ))
)

Was mir noch fehlt ist die Verknüpfung zum Block bzw. die Einbindung falls das möglich ist wenn ich den LISP-Code unter Formel einfüge bekomm ich beim erneuten einfügen der Blockreferenz in die Zeichnung nur #### ausgespuckt...

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

cadffm
Moderator
良い精神




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

Beiträge: 19034
Registriert: 03.06.2002

System: F1
und Google

erstellt am: 08. Okt. 2015 03:24    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 WEIM 10 Unities + Antwort hilfreich

Im Moment wird ein Mtext erstellt mit dem Schriftfeld, der Teil Muß geändert werden.
Da ich nicht am Rechner sitze versuche ich es mal mit Beschreibung EINER möglichen Variante:

Wenn du einen Block hast mit zwei Attributen, das erste deine Nimmer ist, das Zweite sei Schriftfeld und der Block ungleich skaliert werden darf..

Ersetze den ganzen Part  (vla-addMText.... bis einschließlich der vorletzten Klammer durch:
(command "_Attreq" "1" "_Attdia" "0" "_Insert" "MeinBlockName" InsertionPoint (getstring "\nPunktnummer") (strcat <hier der strcat-Teil aus welches den Schriftfeldcode zusammenstückelt> ) "1" "1" "0")

Und oben im Lisp das (vlax-3D-Point (getpoint "Select point: ")) gegen  (getpoint "Select point: ") tauschen.

Hoffentlich passt es so, ansonsten wäre schön wenn dir mal ein anderes Mitglied zur Seite springt. Ab hier passt es dann aber auch gut in das LISPforum von CAD.de

------------------
CAD on demand GmbH - Beratung und Programmierung rund um AutoCAD

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)2019 CAD.de | Impressum | Datenschutz