Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  Lisp
  FYI: Eigenschaftsabfrage in Feld verknüpft mit Objekt

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:  FYI: Eigenschaftsabfrage in Feld verknüpft mit Objekt (6625 mal gelesen)
tunnelbauer
Ehrenmitglied V.I.P. h.c.
Bauingenieur



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

Beiträge: 7085
Registriert: 13.01.2004

ich hab eh keine Probleme damit...

erstellt am: 03. Apr. 2007 20:17    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

Hi,

da ich selber eher länger gesucht habe, möchte ich es Euch nicht vorenthalten:

Der Code anbei stammt in seiner Urform von:
http://rkmcswain.blogspot.com/2006/09/create-field-linked-to-object.html 

Code:

    (defun c:lnkfld ()
      (setq a (car (entsel)) b (getpoint "\n Select Point: "))
      (linkedlength a b)
    )
    (vl-load-com)
    ;;get a reference to model space
    (setq *model-space*
          (vla-get-ModelSpace
            (vla-get-ActiveDocument (vlax-get-acad-object))
          )
    )
    ;;pass this function an entity and a point
    (defun LinkedLength (ent pt / obj objID ip width str)
      ;;convert the entity to an object
      (setq obj  (vlax-ename->vla-object ent)
            ;;get the object ID
            objID (vla-get-objectid obj)
            ;;convert the point
            ip    (vlax-3D-Point pt)
            ;;set the width for the MTEXT
            width 0.0
            ;;set the string - this creates the field
            str  (strcat
                    "%<\\AcObjProp.16.2 Object(%<\\_ObjId "
                    (rtos objID 2 0)
                    ">%).Length \\f \"%lu2%pr2\">%"
                  )
      )
      ;;Create the MTEXT entity containing the field.
      (vla-addMText *model-space* ip width str)
    )

Für die Eigenschaftsabfrage können folgende Argumente (Fallbeispiel Polylinie) verwendet werden - der von mir fett markierte Teil im Code muss getauscht werden:

 

Zitat:

Area
Closed
TrueColor
Elevation
Type
ConstantWidth
Layer
Length
Linetype
LinetypeGeneration
LinetypeScale
Lineweight
Material
ObjectName
PlotStyleName
Thickness

Für andere Objekte gilt:

Geltend gemacht werden muss dabei der Wert/Ausdruck der unten im Feld Field expression zum Tragen kommt (bei einem Bogen wäre demzufolge die Längenabfrage mittels ArcLength möglich).

Warum das ganze ?

Ich persönlich arbeite gerne mit Feldern, da wir häufig Werte haben die sich ändern und das aufgrund der Abhängigkeit zu einem Objekt... Jedesmal neubeschriften nervt tierisch... - und die Felderstellung im AutoCAD pur ist suboptimal - meiner Meinung nach...

Achja - beim Code könnte man natürlich auch noch vorher eine Abfrage für die Systemvariable TEXTSIZE einbauen, damit die Felder dann auch in einer entsprechenden Grösse erstellt werden.

Viel Spass beim zukünftig schnelleren Erstellen von Feldern !

------------------
Grüsse

Thomas

NACHTRAG:

Achtet natürlich beim evaluierten Wert darauf, ob es einer ist, der bei der Formatierung zB eine Genauigkeit/Dezimalstellen verträgt - ja/nein-Werte werden auf Nachkommastellen eher negativ reagieren...       

[Diese Nachricht wurde von tunnelbauer am 03. Apr. 2007 editiert.]

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

holgerlab
Mitglied
Haustechniker


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

Beiträge: 446
Registriert: 02.12.2004

erstellt am: 13. Dez. 2007 09:26    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 tunnelbauer 10 Unities + Antwort hilfreich


Schriftfeld.jpg

 
Hi Thomas, danke für den Code. Ich habe ein wenig damit gebastelt.

Ich wollte die Fläche von geschlossenen Polylinien ermitteln. Allerdings zeichne ich im mm und das Ergebnis soll in m sein.

Lösung
Code:
.Length \\f \"%lu2%pr2\">%

ersetzen durch
.Area \\f \"%lu2%pr2%ct8[1e-006]\">%"


Denn Code bekommt man raus, wenn man ein Schriftfeld herkömmlich erstellt.

und so bekommt man auch noch "m²" angehängt.
.Area \\f \"%lu2%pr2%ps[,m²]%ct8[1e-006]\">%"

------------------
Gruß Holger

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

LiebGuck
Mitglied



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

Beiträge: 14
Registriert: 29.11.2017

AutoCad 2016

erstellt am: 29. Nov. 2017 11:10    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 tunnelbauer 10 Unities + Antwort hilfreich

Hallo

Ja, ich weiß, der Beitrag ist schon älter, aber vielleicht liest ja doch jemand noch hier mit.
Ich probiers halt mal.

Also ich arbeite mit AutoCad 2016, hatte selbst eine Lisp von einem Freund, welche Längen und Flächen mit Schriftfeldern beschriftete. Da ich Lisp leider selber nicht verstehe, sondern nur anwende, war ich nun ziemlich aufgeschmissen, als ich nun nach ein paar Jahren wieder mit AutoCad arbeite und diese Lisp nicht mehr funktioniert. Habe  hier um Hilfe gesucht und diesen Beitrag gelesen. Aber .... auch das hier funktioniert nicht, es wird nur ein Mtext mit diesen #### Inhalt gezeigt, sowie auch bei meiner Lisp.

Wisst ihr woran es liegen kann? Was denn zum Umschreiben wäre?

Lieben Gruß
LiebGuck

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

jörg.jwd
Ehrenmitglied V.I.P. h.c.
CAD-PDM Administrator


Sehen Sie sich das Profil von jörg.jwd an!   Senden Sie eine Private Message an joerg.jwd  Schreiben Sie einen Gästebucheintrag für joerg.jwd

Beiträge: 3109
Registriert: 05.11.2003

erstellt am: 29. Nov. 2017 12: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 tunnelbauer 10 Unities + Antwort hilfreich

...schau mal hier nach, da könnte was für dich dabei sein.


------------------
Grüße

Jörg

man hat nie Zeit es richtig zu machen, aber immer genug Zeit es nochmals zu machen

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

infiel_thomas
Mitglied
Rentner


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

Beiträge: 140
Registriert: 06.07.2005

Win7 64bit
MAP 3D 2010 SP2
MAP 3D 2014 SP1
QGIS

erstellt am: 29. Nov. 2017 12:19    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 tunnelbauer 10 Unities + Antwort hilfreich

LiebGuck
Mitglied



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

Beiträge: 14
Registriert: 29.11.2017

AutoCad 2016

erstellt am: 29. Nov. 2017 12:48    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 tunnelbauer 10 Unities + Antwort hilfreich

Ich werd mich mal dort umschauen, danke dir.

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

runkelruebe
Ehrenmitglied V.I.P. h.c.
Straßen- / Tiefbau



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

Beiträge: 8075
Registriert: 09.03.2006

sw:
Win7-x64
Office 365 ProPlus
C3D (& LT )
ET; DACH; Extensions
-------------------
hw:
FX3800
i5 CPU 670
8GB RAM

erstellt am: 29. Nov. 2017 12:57    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 tunnelbauer 10 Unities + Antwort hilfreich

ACHTUNG! Sie antworten auf einen Beitrag der älter als 1 Jahr ist!

Eben. Und damals gab es dieses 64bit-Gedöns noch nicht  

Hintergrund des Gartenzauns ist die andere ObjectID, die seit x64 aufgerufen wird.

Ergänze/ändere den code wie folgt:

Code:
(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:lnkfld ()
      (setq a (car (entsel)) b (getpoint "\n Select Point: "))
      (linkedlength a b)
    )
    (vl-load-com)
    ;;get a reference to model space
    (setq *model-space*
          (vla-get-ModelSpace
            (vla-get-ActiveDocument (vlax-get-acad-object))
          )
    )
    ;;pass this function an entity and a point
    (defun LinkedLength (ent pt / obj objID ip width str)
      ;;convert the entity to an object
      (setq obj  (vlax-ename->vla-object ent)
            ;;get the object ID
            objID (vla-get-objectid obj)
            ;;convert the point
            ip    (vlax-3D-Point pt)
            ;;set the width for the MTEXT
            width 0.0
            ;;set the string - this creates the field
            str  (strcat
                    "%<\\AcObjProp Object(%<\\_ObjId "
                    (itoa objID )
                    ">%).Length \\f \"%lu2%pr2\">%"
                  )
      )
      ;;Create the MTEXT entity containing the field.
      (vla-addMText *model-space* ip width str)
    )


Sollte tun.
Danke u.a. an wronzky, von dem ich diese Zeilen geklaut und verwurstelt habe.
HTH

PS:
Herzlich willkommen im Forum!

Wichtige Links für den problemlosen Einstieg:
sinnvoll fragen | CAD.de-Hilfe | Nettiquette | Forensuche | Funktionsweise des Filters | Syntax der CAD.de Suche

Bitte füll bei Gelegenheit Deine System-Info aus, die hilft uns, Dir zu helfen.


------------------
Gruß,
runkelruebe          Herr Kann-ich-nich wohnt in der Will-ich-nich-Straße...

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

LiebGuck
Mitglied



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

Beiträge: 14
Registriert: 29.11.2017

AutoCad 2016

erstellt am: 29. Nov. 2017 13:10    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 tunnelbauer 10 Unities + Antwort hilfreich

Toll, hab das was ich eigentlich brauche, wenn ich jetzt noch lisp programmieren könnte, könnte ich es noch etwas auf meine Bedürnisse zu schneiden.
Zwei Kommastellen und ein m² bzw. m danch wäre mir noch recht.

ABER vielen Dank für die wirklich brauchbaren und tollen Tipps - an euch beide.

Lieben Gruß

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

LiebGuck
Mitglied



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

Beiträge: 14
Registriert: 29.11.2017

AutoCad 2016

erstellt am: 29. Nov. 2017 13:12    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 tunnelbauer 10 Unities + Antwort hilfreich

Danke dir auch runkelruebe, werd ich gleich ausprobieren

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

runkelruebe
Ehrenmitglied V.I.P. h.c.
Straßen- / Tiefbau



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

Beiträge: 8075
Registriert: 09.03.2006

sw:
Win7-x64
Office 365 ProPlus
C3D (& LT )
ET; DACH; Extensions
-------------------
hw:
FX3800
i5 CPU 670
8GB RAM

erstellt am: 29. Nov. 2017 13:19    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 tunnelbauer 10 Unities + Antwort hilfreich

Zu den Nachkommastellen und dem m2: Schau Dir den Beitrag von holgerlab weiter oben nochmal an.

------------------
Gruß,
runkelruebe          Herr Kann-ich-nich wohnt in der Will-ich-nich-Straße...

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