Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  Rund um AutoCAD
  Lisp-Tool Flächenermittlung unter 64-bit

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:  Lisp-Tool Flächenermittlung unter 64-bit (3206 mal gelesen)
GWH
Mitglied



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

Beiträge: 549
Registriert: 08.06.2001

erstellt am: 14. Sep. 2010 14:21    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

Hallo Lisp-Profis,

folgende Problematik stellt sich unter der 64-bit Version von AutoCAD ein (egal ob 2010 oder 2011):
es gibt ein Lisp zu Flächenermittlung von Objekten, wo die Fläche als Schriftfeld abgelegt wird.
Funktionierte bisher in den 32-bit Versionen einwandfrei, egal ob AutoCAD oder Civil, aber in den 64-bit nicht mehr - egal ob AutoCAD oder Civil, ob Win XP oder Win 7.
Es wird die Abfrage ausgeführt, das Schriftfeld abgelegt, jedoch nicht der Flächeninhalt, sonder die Rautezeichen = Verknüpfung zu Objekt verloren.

So sieht das aktuelle Lisp aus:

(defun c:flm2 ()
      (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)
                    ">%).Area \\f \"%lu2%pr2%ct8\">%""m²"
                  )
      )
      ;;Create the MTEXT entity containing the field.
      (vla-addMText *model-space* ip width str)
    )

Kennt von euch jemand dieses Problem, beziehungsweise hat eine Lösung?

Vielen Dank im voraus.

------------------
Ciao Günter
--------------------------------------------------------------------------------
"Wir haben keine Probleme, sondern Aufgaben zu lösen."

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

CADmium
Moderator
Maschinenbaukonstrukteur




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

Beiträge: 13508
Registriert: 30.11.2003

Hinweis: Meine Mitarbeit auf CAD.DE ist fakultativ, unentgeltlich und beruht nur auf einem ausgeprägtem Helfersyndrom.

erstellt am: 14. Sep. 2010 14: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 GWH 10 Unities + Antwort hilfreich

die ObjectID ist etwas länger geworden  .. such mal hier im Forum nach ObjectID und 64 Bit und ändere deinen Code entsprechend


ungetestet:

(setq OBJ(vlax-ename->vla-object ENT))
....
(or(and(setq UTIL(vla-get-utility(vla-get-ActiveDocument (vlax-get-acad-object)))
      (vlax-method-applicable-p UTIL "GetObjectIdString")
      (setq OBJID(vlax-invoke-method UTIL "GetObjectIdString" OBJ :vlax-False)) 
  )
  (setq OBJID (vla-get-objectid OBJ)           
)
....
(setq STR (strcat
            "%<\\AcObjProp.16.2 Object(%<\\_ObjId"
            (vl-princ-to-string OBJID)                               
            ">%).Area \\f \"%lu2%pr2%ct8\">%""m²"
          )

------------------
      - Thomas -          
"Bei 99% aller Probleme ist die umfassende Beschreibung des Problems bereits mehr als die Hälfte der Lösung desselben."

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

GWH
Mitglied



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

Beiträge: 549
Registriert: 08.06.2001

erstellt am: 14. Sep. 2010 14:39    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

das mit der ObjektID ist mir schon aufgefallen, nur hatte ich im Forum diesbezüglich nichts gefunden.

------------------
Ciao Günter
--------------------------------------------------------------------------------
"Wir haben keine Probleme, sondern Aufgaben zu lösen."

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

GWH
Mitglied



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

Beiträge: 549
Registriert: 08.06.2001

AutoCAD ab R14, Civil 3D 20xx
BricsCAD ab V20
Win 10 Pro 64bit, ...

erstellt am: 14. Sep. 2010 15:27    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

Da meine Kenntnisse im programmieren äußerst dürftig sind, hoffe ich es richtig zusammengebaut zu haben.
Es funktioniert nach wie vor nicht - Schriftfeld mit Raute wird abgelegt - zusätzlich bekomme ich folgende Meldung:

; Fehler: Falsch formatierte Liste in Eingabe

Befehl: flm2

Objekt wählen:
Select Point: #<VLA-OBJECT IAcadMText2 000000002be0ff28>

Befehl:


**********************

zusammengestellter Code:

defun c:flm2 ()
      (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
            (or(and(setq UTIL(vla-get-utility(vla-get-ActiveDocument (vlax-get-acad-object)))
      (vlax-method-applicable-p UTIL "GetObjectIdString")
      (setq OBJID(vlax-invoke-method UTIL "GetObjectIdString" OBJ :vlax-False))
  )
(setq 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
            (setq STR (strcat
            "%<\\AcObjProp.16.2 Object(%<\\_ObjId"
            (vl-princ-to-string OBJID)                             
            ">%).Area \\f \"%lu2%pr2%ct8\">%""m²"
          )

      ;;Create the MTEXT entity containing the field.
      (vla-addMText *model-space* ip width str)
    )

------------------
Ciao Günter
--------------------------------------------------------------------------------
"Wir haben keine Probleme, sondern Aufgaben zu lösen."

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

wronzky
Ehrenmitglied V.I.P. h.c.
CAD-Dienstleistungen für Architekten



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

Beiträge: 2154
Registriert: 02.05.2005

CAD:
AutoCAD 2.6 bis 2014
ADT 2005 bis ACA 2013
Arcibem
System:
Windows
Internet-Startseite:
http://www.archi.de

erstellt am: 14. Sep. 2010 15:46    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 GWH 10 Unities + Antwort hilfreich

gerade dachte ich, ich hätte ein deja vu

Grüsse, Henning

------------------
zur Abstimmung

Henning Jesse
VoxelManufaktur
Computer-Dienstleistungen für Architekten und Ingenieure

  http://www.voxelman.de

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

GWH
Mitglied



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

Beiträge: 549
Registriert: 08.06.2001

erstellt am: 14. Sep. 2010 17:45    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

Danke für dein bemühen Henning, aber diese Routine ist nur für Polylinien.
Zudem funktioniert sie leider nicht. Es kam die Meldung:

Raumpolygon wählen: ; Fehler: Fehlerhafter Argumenttyp: numberp: "8796083607888"

Im Beitrag fand ich dann deinen Hinweis, das etwas ausgetauscht gehört. Getan, nächste Meldung:

Objekt wählen:
Select Point: #<VLA-OBJECT IAcadMText2 0000000025f11558>

und der Befehl wurde ohne Ergebnis beendet.

Wie schon erwähnt, bin ich dem Programmieren nicht mächtig.
Trotzdem vielen Dank.

------------------
Ciao Günter
--------------------------------------------------------------------------------
"Wir haben keine Probleme, sondern Aufgaben zu lösen."

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

runkelruebe
Moderator
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

Kinder, kauft Kämme!
Es kommen lausige Zeiten.

erstellt am: 14. Sep. 2010 19:15    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 GWH 10 Unities + Antwort hilfreich

Weil Du eine ganz fiese Stolperstelle drin hast, also für jmd. der nicht proggen kann, wie Dich und mich z.B. 
Hat mich doch so einige Minuten gekostet, diese zusätzliche Zeile 

in wronzkys Beispiel heißt es (freies Zitat)

Zitat:
statt:
Code:
(vla-get-objectid (vlax-ename->vla-object hElement))
Das:
Code:
(Get-ObjectIDx64 hElement)

Du dagegen hast

Code:
    (setq obj  (vlax-ename->vla-object ent)
            ;;get the object ID
            objID (vla-get-objectid obj)
da stehen--> da mußt Du eingreifen.
Das andere, was Du noch tauschen mußt, steht weiter unten (das mit dem rtos)

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

System-Info | Dateianhänge | FAQ-ACAD | CAD.de-Hilfe | Sei eine Antilope

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