Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  Lisp
  _area / selbstschneidende Kurve

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:   _area / selbstschneidende Kurve (1328 mal gelesen)
kist
Mitglied



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

Beiträge: 78
Registriert: 20.01.2005

Acad 2010
Windows XP SP3

erstellt am: 15. Mrz. 2010 09:41    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 ich habe ein Problem mit einem "Upgrade" von 2007 auf 2010

folgender Codeschnipsel

Code:
 
(Command "_area" "_o" (handent (car so_graf)))
(setq lg (/ (getvar "perimeter") (getvar "DIMLFAC")))

Das Objekt ist immer eine Polylinie.
Wenn die Polylinie z.B. Z-förmig ist
gab es in ACAD 2007 kein Problem
in ACAD 2010 gibt es folgende Fehlermeldung

Zitat:
Fläche einer selbstschneidenden Kurve kann nicht berechnet werden.

Ich hoffe mir kann jemand helfen.

------------------
schöne Grüsse

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: 15. Mrz. 2010 10: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 Nur für kist 10 Unities + Antwort hilfreich

ich denke ACAD ist da endlich mal konsequent, anbei das Ergebnis in 2008
        
Immer die gleiche Kurve .. einmal als 2 Dreiecke ... einmal, die gleichen Dreiecke einschließende sich überkreuzende Pl und einmal als nicht geschlossenen PL ... mit der jeweils angezeigten Fläche

such dir was aus    

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

kist
Mitglied



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

Beiträge: 78
Registriert: 20.01.2005

Acad 2010
Windows XP SP3

erstellt am: 15. Mrz. 2010 10: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

Hallo

Ich hab mich denke ich etwas lückenhaft ausgedrückt

Ich hab das Problem, dass die Lisp-Routine einfach abbricht.


Ich benötige nur die Länge der Polylinie.

------------------
schöne Grüsse

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: 15. Mrz. 2010 11: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 Nur für kist 10 Unities + Antwort hilfreich

    (gilt der ursprünglichen Problembeschreibung  )

z.B.:

(vla-get-length(vlax-ename->vla-object(car(entsel "\nPolylinie:"))))

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

kist
Mitglied



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

Beiträge: 78
Registriert: 20.01.2005

Acad 2010
Windows XP SP3

erstellt am: 15. Mrz. 2010 11: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

Vielen herzlichen Dank

Genau das brauche ich.

Als Hobby - Freizeit - so ab und an mal - Lispler tu ich mich mit dem ActiveX
oder wie das heisst sehr schwer.
Denke ich sollte mich da mal einlesen.

------------------
schöne Grüsse

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: 15. Mrz. 2010 22: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 kist 10 Unities + Antwort hilfreich

Hallo,

Ein Beispiel für eine oder mehrere Polylinien, ohne VL-Befehle.

;;------------------------------------
(defun C:PLL (/ SS I LP EN)

(prompt "\nBitte Polyline\(n\) wählen: ")
(while (not SS)
  (setq SS (ssget '((0 . "*POLYLINE"))))
  (if (not SS)
  (alert "Es wurde nichts gewählt")
  )
)
(setq I  (sslength SS)
      LP 0
)
(while (not (minusp (setq I (1- I))))
  (setq EN (ssname SS I))
  (command "_.AREA" "_E" EN)
  (setq LP (+ LP (getvar "PERIMETER")))
)
(princ (strcat "\nLänge der " (itoa (sslength ss)) " Polylinien = " (rtos LP 2 2) ))
(princ)
)
(princ)
(prompt "\nC:PLL")
(princ)
;;---------------------------------

Gruß
Theodor
www.cad-cnc.com

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: 16. Mrz. 2010 06:31    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 kist 10 Unities + Antwort hilfreich

Hallo Theodor

...IMHO funktionierten genau diese Zeilen laut 1.Posting in 2010 nicht, weil area da nicht will !!! Selbst ausgetestet hab ich es allerdings nicht. Vielleicht kann ja noch mal jemand sein 2010 bemühen.

Aber man kann Polylinienlängen natürlich auch ohne ActiveX berechen. über (distance ) und etwas Mathe bei den Bögen ist das ja kein Problem ... allerdings auch kein 10-Zeile mehr.

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

thors-hammer
Mitglied
technischer Angestellter


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

Beiträge: 19
Registriert: 25.10.2006

AutoCAD 2012, Windows 7 (64bit)

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

bei sich kreuzenden polylinien kommt bei mir im autocad 2010 folgende fehlermeldung:
"Konnte Fläche nicht berechnen."

jedoch wenn du nur die länge einer polylinie benötigst, würde ich als alternative zum befehl "_.AREA", "_.LENGTHEN" verwenden. und anschließend wie gehabt die länge aus der systwemvariabel "PERIMETER"
holen.

mit besten grüßen
Manuel

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: 16. Mrz. 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 kist 10 Unities + Antwort hilfreich

also rudimentär umgesetzt:

(setq PL(car(entsel"\nPL wählen:")))
(command "_lengthen" (ssadd PL) "")
(setq L (getvar "perimeter"))

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

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: 16. Mrz. 2010 10:04    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 kist 10 Unities + Antwort hilfreich

Hallo Thomas,

".. allerdings auch kein 10-Zeile mehr."

... kann ich bestätigen, ich habe es für CNC benötigt, hinzu kommt noch, dass es für Polylininen und LWPolylinien funktionieren soll.

Gruß
Theodor

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