Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  Lisp
  Eigenschaften einer Polylinei als Text ausweisen

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:   Eigenschaften einer Polylinei als Text ausweisen (1436 mal gelesen)
kilmar
Mitglied
Techniker Bau

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

Beiträge: 5
Registriert: 24.02.2010

erstellt am: 24. Feb. 2010 12:06    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 zusammen,
also zunächst bin ich komplett neu hier im Forum, und ich hoffe ich stelle hier keine blöden Frage...
Weiters möchte ich noch anmerken dass ich in der lisp-Programmierung so gut wie keine Ahnung habe :-(
Ich kann zwar lisp Datein laden, und das wars auch schon.

Also ich hätte da folgendes Problem in meinem CAD-Programm 2010.
Ich hätte da eine Zeichnung bzw. dwg Datei mit ein paar hundert Polylininien welche geschlossen sind.
Und mich interessiert von jeder Polylinie die Eigenschaften: FLÄCHE und LÄNGE
Weiters liegen die Polylinien je nach Eigenschaft auf unterschiedlichen Layern (z.B.: 01_Layer Nr.1; 02_Layer Nr.2; usw.)

Nun bräuchte ich ein hilfreiches Tool welche mir die Eigenschaften (Fläche und Länge) für jede einzelne Polylinie seperat ausweist.
Super wäre noch den Layernamen hinzuzufügen, z.B.: 01_Layer Nr.1: Fläche: 800,151 EH2; Länge: 70,345 EH
und eben diese Information neben der Polylinie hintextet.

Ich bin zwar beim CADWiesel schon fast fündig geworden, und zwar die "FLA_BER" lisp Datei. Aber mir fehlt da eben etwas, und zwar:
- das der LAYERNAME im Text auch eingebaut wird
- die Zusatzinfo der Länge der Polylinie bzw. die Abwicklung
- und dass das ganze auf 3 Kommastellen ausgewiesen wird (d.h. 800.151 EH2 und nicht 800.15 EH2)
- und eben alle Polylinien welche zum auswerten sind seperat je Polylinie hinzuschreiben, und nicht zu addieren

Wenn mir da jemand helfen könnte wär dass super super toll :-)

mfg
der auf Hilfe angewiesene Markus

PS: hier noch die CADWiesel lisp Datei

____________________________________

(defun c:fla_ber ( / t_2 Ss)

;;(if
;; (/= (findfile "md_fla.dwg")nil)
;;(progn

(setq Ss nil
t_2 nil)

(setq Ss (ssget ));'((0 . "LWPOLYLINE"))))
(if (not Ss) (princ (strcat "\nNichts gewählt."))
(progn
(command "_.area" "_a" "_o")
(while (setq t_2 (ssname Ss 0))
;;; (setq md_in (cdr (assoc 10 (entget t_2))))
;;; (setq md_rnr_in (ssget "X" t_2))
;;; (setq startp md_in)
(command t_2)
(setq Ss (ssdel t_2 Ss))
);while
(command "" "")
(princ "\n")
(princ
(strcat "\n*****Gesamtfläche: " (rtos (getvar "area") 2 5)))(terpri)
;(command "_.Insert" "md_fla" startp "1" "1" "0" (rtos (getvar "area")2 2))
);endprogn
);endif
(setq startp (getpoint "Einfügepunkt:"))
(command "_text" startp "2.5" "0" (rtos (getvar "area")2 2))

;;);ende progn
;;);end if
(princ)
)
____________________________________

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

Brischke
Moderator
CAD on demand GmbH




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

Beiträge: 4136
Registriert: 17.05.2001

AutoCAD 20XX, defun-tools (d-tools.eu)

erstellt am: 24. Feb. 2010 12: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 Nur für kilmar 10 Unities + Antwort hilfreich

Zitat:
Original erstellt von kilmar:
...Ich bin zwar beim CADWiesel schon fast fündig geworden, und zwar die "FLA_BER" lisp Datei. Aber mir fehlt da eben etwas, und zwar:
- das der LAYERNAME im Text auch eingebaut wird
- die Zusatzinfo der Länge der Polylinie bzw. die Abwicklung
- und dass das ganze auf 3 Kommastellen ausgewiesen wird (d.h. 800.151 EH2 und nicht 800.15 EH2)
- und eben alle Polylinien welche zum auswerten sind seperat je Polylinie hinzuschreiben, und nicht zu addieren

Wenn mir da jemand helfen könnte wär dass super super toll :-)
...



Hallo,

wenn ich das richtig interpretiere, dann hast du etwas gefunden, brauchst aber etwas ganz anderes, und hoffst nun, dass dir jemand das Ganze macht.
Dazu vielleicht ein Hinweis: Das Lisp-Forum ist zum Austausch zu Themen der Programmierung in dieser Programmiersprache gedacht. Es ist keine Plattform zum Wünsche äußern.

Deine Aufgabenstellung umzusetzen ist nicht so schwer. Wenn du dich selber an der Umsetzung versuchen willst, also den Einstieg in die Programmierung machst, dann sei dir Hilfe zugesichert.
Wenn du dies jedoch nicht vor hast, dann lies hier im Forum mal quer, und es werden dir einige User auffallen, die individuelle Programmierung als Dienstleistung (gegen Entgeld) anbieten.

Bei Fragen ...

Grüße Holger

------------------
Holger Brischke
CAD on demand GmbH
Individuelle Lösungen von Heute auf Morgen.

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

kilmar
Mitglied
Techniker Bau

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

Beiträge: 5
Registriert: 24.02.2010

erstellt am: 24. Feb. 2010 13:36    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

Seas Holger,
danke für deine Antwort... Da ich leider keine Kohle habe um mir soetwas fachgerecht programmieren zu lassen, werde ich nun versuchen meine oben angeführten Probleme selbst zu lösen :-) also ich werd's echt versuchen...
und es tut mir leid solch "anscheinend" blödsinnige fragen zu schreiben :-(

könntest du mir vielleicht irgenwelche links zum thema lisp Programmierung für dummies wie mich zukommen lassen... wo man eben von null an versuchen kann dies irgendwie zu lernen...

...und vielleicht könntest mir ja noch einen tip geben wie man die drei kommastellen einstellt???

mfg
der hilflose markus

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: 13435
Registriert: 30.11.2003

.

erstellt am: 24. Feb. 2010 13:44    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 kilmar 10 Unities + Antwort hilfreich

3 Kommastellen :

(strcat "\n*****Gesamtfläche: " (rtos (getvar "area") 2 3)))

Tipps+ Links:
fürs erste: Mapcar

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

Brischke
Moderator
CAD on demand GmbH




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

Beiträge: 4136
Registriert: 17.05.2001

AutoCAD 20XX, defun-tools (d-tools.eu)

erstellt am: 24. Feb. 2010 13:56    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 kilmar 10 Unities + Antwort hilfreich

Zitat:
Original erstellt von kilmar:
Seas Holger,
danke für deine Antwort... Da ich leider keine Kohle habe um mir soetwas fachgerecht programmieren zu lassen...


dann frag deinen Chef - ich glaube kaum, dass du so etwas privat benötigst.

Zitat:
Original erstellt von kilmar:
..., werde ich nun versuchen meine oben angeführten Probleme selbst zu lösen :-) also ich werd's echt versuchen...
und es tut mir leid solch "anscheinend" blödsinnige fragen zu schreiben :-( ...


Deine Frage war nicht blödsinnig, nur falsch platziert.

Zitat:
Original erstellt von kilmar:
... könntest du mir vielleicht irgenwelche links zum thema lisp Programmierung für dummies wie mich zukommen lassen... wo man eben von null an versuchen kann dies irgendwie zu lernen...
...


Jetzt machst du es dir aber sehr einfach. Das Forum bietet eine sehr gute Suchfunktion.
Für dich nach Lisp lernen gesucht: und gefunden
Zitat:
Original erstellt von kilmar:
...und vielleicht könntest mir ja noch einen tip geben wie man die drei kommastellen einstellt???
...


Für dich nach Kommastellen gesucht: und gefunden

Grüße Holger

------------------
Holger Brischke
CAD on demand GmbH
Individuelle Lösungen von Heute auf Morgen.

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

kilmar
Mitglied
Techniker Bau

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

Beiträge: 5
Registriert: 24.02.2010

erstellt am: 24. Feb. 2010 16:16    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 Holger,
danke für deine tipps :-) bin auch schon im Forum fündig geworden, jetzt hab ich mir folgende lisp Datei zusammengestöpselt und bin schon fast am Ende meiner Probleme...

Vielleicht könntest du mir noch erklären wie man in der unten angeführten lisp Datei statt der manuellen Eingabe einen automatischen Auszugs des aktuellen layers macht??? BITTE :-)

Und wenn ich dich um noch etwas BITTEN kann wäre dass wie man die Auswertungen (in diesem Fall dreimal d.h. Position->Fläche->Umfang) in einem setzt... er soll einfach alles mit einem Einfügepunkt machen und untereinander auflisten...

(defun c:test ( / obj flae umfa)
(setq filename "flae.dat")
  (setq trenn    " ; ")
  (setq nachkomma 3)
  (Setq BLIALT (getvar "blipmode"))
(Setq CMDALT (getvar "cmdecho"))
(Setq OSMALT (getvar "osmode"))
(setvar "blipmode" 0)
(setvar "cmdecho" 0)
(setvar "OSMODE" 0)

  (terpri)
(SETQ obj (getpoint "Punkt in der Fläche"))
  (command "_.boundary" obj "")
  (command "_.area" "o" "_last")
  (setq flae (getvar "area"))
  (setq umfa (getvar "perimeter"))
(terpri)

  (setq _typ (getstring "Position : "))

  (alert (strcat
"Fläche: "  (rtos flae 2 nachkomma)
"\nUmfang: " (rtos umfa 2 nachkomma)
"\nPosition: " _typ
))

  (princ)

  (terpri)

(setq file (open "flae.dat" "a"))
(write-line (strcat
      _typ
trenn
(rtos flae 2 nachkomma)
trenn
(rtos umfa 2 nachkomma)
    )
file)
  (close file)

(setq p_text (getpoint "Einfügepunkt für Beschreibung"))
  (setq s_text (strcat _typ))
  (command "_.text" p_text "" "" s_text)
  (setq p_flae (getpoint "Einfügepunkt für Fläche"))
  (setq s_flae (strcat "A = " (rtos Flae 2 nachkomma)"m2"))
  (command "_.text" p_flae "" "" s_Flae)
(terpri)
  (setq p_umfa (getpoint "Einfügepunkt für Umfang"))
  (setq s_umfa (strcat "U = " (rtos umfa 2 nachkomma)"m"))
  (command "_.text" p_umfa "" "" s_umfa)
  (terpri)

(setvar "blipmode" BLIALT)
(setvar "cmdecho" CMDALT)
(setvar "OSMODE" OSMALT)
)
(alert "Das Programm ist ordnungsgemäß geladen
      \nAufruf mit test ---> enter")

Danke
Markus

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

Geos
Mitglied
Vermessungstechniker i.R.


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

Beiträge: 1017
Registriert: 21.09.2001

ACAD Map 2010, Win 7 Pro
eigene Lisp's<P>HW: Core i7 860, 2.8 GHz
3.3 GB, NVIDIA GeForce GTS 250

erstellt am: 24. Feb. 2010 18:35    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 kilmar 10 Unities + Antwort hilfreich

Wenn Du das hier
Zitat:
(alert (strcat
"Fläche: "  (rtos flae 2 nachkomma)
"\nUmfang: " (rtos umfa 2 nachkomma)
"\nPosition: " _typ
))

erweiterst auf
Code:
(alert (setq gesamttext (strcat
"Fläche: "  (rtos flae 2 nachkomma)
"\nUmfang: " (rtos umfa 2 nachkomma)
"\nPosition: " _typ
)))

dann hast Du schon den Text den Du (wahrscheinlich) willst.
Und wie Du den ausgibst siehst Du weiter unten im Programm.

------------------
Schöne Grüße
Ernst

www.geopaint.at

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

Brischke
Moderator
CAD on demand GmbH




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

Beiträge: 4136
Registriert: 17.05.2001

AutoCAD 20XX, defun-tools (d-tools.eu)

erstellt am: 25. Feb. 2010 08: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 Nur für kilmar 10 Unities + Antwort hilfreich

Hallo kilmar,

das Lisp-Teil, was du da ausgegrsben hast, passt aber nicht zu dem, was du eigentlich möchtest.
Bei diesem clickst dun in eine augenscheinlich vorhandene Fläche und schreibst zu dieser die Fläche und Unfang raus.

Du willst doch aber zu allen vorhandenen geschlossenen Polylinien eben diese Werte + Layername anschreiben.

Dazu musst du dich zuerst mit Auswahlsätzen beschäftigen:
(ich tippe das hier nur so runter, Code kann also Schreibfehler enthalten.

(setq aws (ssget "_X" '((0 . "*POLYLINE"))))
dann musst du die Elementnamen der Polylines ermitteln. Ich denke, wenn du nach bau_elemli im Forum suchst solltest du das Richtige finden.
Das Folgende ist eine Schleife durch alle diese Polylinien
(mapcar '(lambda (EL / LAYERname vlEL fl umfg txt ipt)
;Ermittlung Layername
(setq LAYERname (cdr(assoc 8 (entget EL))))
;Da die Eigenschaft Fläche und Umfang direkt als Eigenschaft des ActiveX-Objektes der Polyline abrufbar ist, musst du das VL-Object ermitteln
(setq vlEL (vlax-ename->vlaObject EL))
;Nun kannst du die Eigenschaften ermitteln
(setq fl (vlax-get-property vlEL 'area)
umfg (vlax-get-property vlEL 'Length)
txt (strcat Layername "; " (rtos fl 2 2) "; " (rtos umfg 2 2))
)
;Wohin nun mit dem Text? ich würde den in den Schwerpunkt der PL setzen (musst du mal im Forum suchen, wie das geht
;... Punkt ermitteln und Text setzen
)
(if aws(bau_elemli aws))
)

So, das ist alles ... bei Fragen...

Grüße Holger

------------------
Holger Brischke
CAD on demand GmbH
Individuelle Lösungen von Heute auf Morgen.

   

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

Theodor Schoenwald
Ehrenmitglied



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

Beiträge: 1672
Registriert: 16.04.2002

erstellt am: 25. Feb. 2010 23:06    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 kilmar 10 Unities + Antwort hilfreich

Hallo Markus,

in irgend einem Beitrag ist das Lisp-Handbuch von ACAD14 als Word-Datei zu finden.
Wenn Du das Buch in Ruhe anschaust und es zum nachschlagen verwendest, ist die Einarbeitung in Lisp einfacher für Dich.

Wenn Du dann weiter bist, kannst Du Dir die Seiten von Axel (Mapcar) vornehmen.
Eine gut verständliche Seite ist: http://www.afralisp.net/
die wurde Dir schon genannt.
Auch die: http://www.4d-technologies.com/techcenter/index.htm
hat schöne Beispiele.


Gruß
Theodor Schönwald

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

Theodor Schoenwald
Ehrenmitglied



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

Beiträge: 1672
Registriert: 16.04.2002

erstellt am: 04. Mrz. 2010 18:44    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 kilmar 10 Unities + Antwort hilfreich

Hallo Markus,

kannst Du mit dem: http://www.cadtutor.net/forum/showthread.php?t=1437
etwas anfangen?

Gruß
Theodor Schönwald
www.cad-cnc.com

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

cadplayer
Ehrenmitglied
CADniker


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

Beiträge: 1817
Registriert: 28.04.2009

Windows 10
64bit system
Autocad Civil3d 2017 ENGLISH
Visual Studio 2015
OpenDCL.Runtime.8

erstellt am: 05. Mrz. 2010 08: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 kilmar 10 Unities + Antwort hilfreich

Danke für die Links Theodor, den x-tension komme ich mehr auf die Schliche...
wir könnten eigentlich den thread mit dem hier verbinden http://ww3.cad.de/foren/ubb/Forum145/HTML/003022.shtml

Gruss cp

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