| |
| Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte |
Autor
|
Thema: elliptischer Bogen - mengen nur händisch rechenbar (1800 mal gelesen)
|
cadplayer Ehrenmitglied CADniker
Beiträge: 1832 Registriert: 28.04.2009
|
erstellt am: 07. Dez. 2009 16:05 <-- editieren / zitieren --> Unities abgeben:
Steh vor der Entscheidung in beiliegender Zeichnung die Mengenermittlung von Hand durchzuführen. Die Architekten im Haus zeichnen gerne mit Ellypsen - Katstrophe da mit gängigen Lisproutinen lwplines rauszuziehen, die mir quasi die Excelliste auf knopfdruck ausdrucken. Meine Frage: gibt es Möglichkeiten eine Ellypse in eine lwpolyline umzuwandeln. Oder ist der Gedanke Blödsinn, weil einfacher Test Ellypse + boundary ergibt region, die beim zerlegen wieder eine Ellypse ist ? cp Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
cadffm Moderator 良い精神
Beiträge: 21533 Registriert: 03.06.2002 Alles
|
erstellt am: 07. Dez. 2009 16:12 <-- editieren / zitieren --> Unities abgeben: Nur für cadplayer
Ein Tip: Erkläre doch das ganze Vorhaben, dann bekommst du schneller und gezieltere Antworten ! Da hier von MENGEN geredet wird wäre eine logische Antwort: Ob du 5 Ellipsen oder 5 Polylinien hast, das ist in der Menge kein Unterschied . Also: Bitte die ganze Aufgabe (und Ja - natürlich gibt es auch schon im www Routinen die mit einer Polylinie eine Ellipse abbildet, irgendwo. ------------------ die alte SUCHfunktion.. - System-Angaben - User:FAQ(Adesk) Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Ex-Mitglied
|
erstellt am: 07. Dez. 2009 16:12 <-- editieren / zitieren -->
Hi, sichern als DXF12 und dann wieder öffnen macht eine Polylinie (aus zusammenhängenden angenäherten Bögen) draus. - alfred - ------------------ www.hollaus.at |
CADmium Moderator Maschinenbaukonstrukteur
Beiträge: 13508 Registriert: 30.11.2003 .
|
erstellt am: 07. Dez. 2009 16:17 <-- editieren / zitieren --> Unities abgeben: Nur für cadplayer
|
cadplayer Ehrenmitglied CADniker
Beiträge: 1832 Registriert: 28.04.2009
|
erstellt am: 07. Dez. 2009 16:28 <-- editieren / zitieren --> Unities abgeben:
Hier ein file mit allen Schraffuren, von denen ich die Flächen erhalten möchte. hatchfl.vlx und hatchb.lsp habe ich zum Erzeugen der Umgrenzungen verwendet mit Folge, das es teilweise (bei ellyptische Bögen nicht möglich ist eine Polylinie zu bekommen) Gruss cp PS: Das einfachste wär ja, wenn ich den Flächenwert aus den Schraffuren ziehen könnte. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
CADmium Moderator Maschinenbaukonstrukteur
Beiträge: 13508 Registriert: 30.11.2003 .
|
erstellt am: 07. Dez. 2009 16:35 <-- editieren / zitieren --> Unities abgeben: Nur für cadplayer
|
cadffm Moderator 良い精神
Beiträge: 21533 Registriert: 03.06.2002 Alles
|
erstellt am: 07. Dez. 2009 16:39 <-- editieren / zitieren --> Unities abgeben: Nur für cadplayer
|
cadplayer Ehrenmitglied CADniker
Beiträge: 1832 Registriert: 28.04.2009
|
erstellt am: 07. Dez. 2009 16:59 <-- editieren / zitieren --> Unities abgeben:
die schwed. Art lange um den heissen Brei reden - Danke für den Tip mein Ansatz zum picken von Schraffuren und überführen der Werte in Atrribute, es hakt aber - ich finde den Fehler nicht. ;(setq startwert (1- (getint "area start nr.: "))) (setq aws (ssget '((0 . "hatch")))); funktioniert mit hatch (if (/= aws nil) (progn (setq i 0) (repeat (setq elname (ssname aws i)) (setq element (entget elname)) ; (setq i (1+ i)) ; (setq lnr (strcat (rtos (+ i startwert) 2 0))) (setq flache (vla-get-area(vlax-ename->vla-object(aws)))) (setq fltxt (rtos flache)) (setq elayer (cdr(assoc 8 element))) ) ) ) (command "_-insert" "_area" (getpoint "\npik point\n") 0 1) "1" "1" "0" lnr fltxt elayer)) den Wunsch eine forlaufende Nummer einzufügen schlug fel. cp [Diese Nachricht wurde von cadplayer am 09. Dez. 2009 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
cadplayer Ehrenmitglied CADniker
Beiträge: 1832 Registriert: 28.04.2009 Windows 10 64bit system Autocad Civil3d 2020 ENGLISH Visual Studio 2019 OpenDCL.Runtime.9<P>
|
erstellt am: 09. Dez. 2009 12:47 <-- editieren / zitieren --> Unities abgeben:
Sorry, vielleicht verdeutlich das mein Problem mehr (setq obj (ssget '((0 . "hatch"))) fl (vla-get-area(vlax-ename->vla-object(car (entsel "\nselect hatch !\n")))) elayer (cdr(assoc 8 aws))) (command "_-insert" "_area" (getpoint "\npik point\n") "1" "1" "0" "" fl elayer) mein Block benötigt die Angaben Flächenwert (von var fl ermittelt aus bestehender Schraffur) Flächenlayer (von var asso-liste elayer) ich weiss nicht, ob man ssget und entsel zu vermischen darf ?!
[Diese Nachricht wurde von cadplayer am 09. Dez. 2009 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
CADmium Moderator Maschinenbaukonstrukteur
Beiträge: 13508 Registriert: 30.11.2003 .
|
erstellt am: 09. Dez. 2009 12:52 <-- editieren / zitieren --> Unities abgeben: Nur für cadplayer
|
cadplayer Ehrenmitglied CADniker
Beiträge: 1832 Registriert: 28.04.2009
|
erstellt am: 09. Dez. 2009 13:21 <-- editieren / zitieren --> Unities abgeben:
@CADmium Genau, dem schliesse ich mich an - ich würde mal sagen unschuldiges Mädchen - das probieren will, aber ziehmlich verkrampft ist. Soweit bin ich noch nicht durchgestiegen bei den 300 Lisp-Funktionen - also was will ich... Ich habe eine Zeichnung mit Schraffuren, von denen ich Fächengrössen generieren will. Also einen Block mit den Attributen laufende Nummer, Flächengrösse und Flächenlayer -> damit kann ich später die Mengen gut mit Excel weiterverarbeiten. Mein erster Versuch war, die Umgrenzungs-polygone mit hatchfl.vlx zu erstellen, denn von Polygonen kann ich die Blöcke erzeugen. Das schlug fel, weil ellyptische Bögen in den Schraffuren liegen. Also versucht ich mit dem super einwurf von Dir (vla-get-area(vlax-ename->vla-object(car(entsel "\nSchraffur wählen:")))) etwas zu stricken - das Ergebnis kennst Du. Was kann ich also tun ?! Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
gmk Mitglied Dipl.-Ing.(FH) Vermessung
Beiträge: 667 Registriert: 23.10.2002 Autocad 2004, WS CadCompass, Normica V2000, WinXP Prof., AMD Athlon 64 X2, 2GB, NVIDIA GeForce 7600GS, HP1055CM
|
erstellt am: 09. Dez. 2009 14:58 <-- editieren / zitieren --> Unities abgeben: Nur für cadplayer
Servus DD :-) Ich glaub' du bringst da Auswahlsätze und Einzelauswahl irgendwie durcheinander. Da du mit Auswahlsätzen arbeitest würde ich die AWS erstmal in eine Liste überführen. Die kannst du dann entspannt mit einer FOREACH-Schleife abarbeiten. Diese Funktion erfordert i.Ü. ein "Einzelobjekt" und keinen Auswahlsatz. (vlax-ename->vla-object(aws)) .. und hier willst du aus einer Liste wie sie ENTGET zurückliefert etwa rausziehen; wird also mit einem AWS auch nicht funktionieren. .. und ist der Name deines Blocks wircklich "_area"? Ciao Georg
------------------ http://www.xxx-tausend.info Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
cadplayer Ehrenmitglied CADniker
Beiträge: 1832 Registriert: 28.04.2009
|
erstellt am: 09. Dez. 2009 15:43 <-- editieren / zitieren --> Unities abgeben:
Hi Ja servus - schön mal von Dir zu hören (dem werd ich gleich mal nachgehen) Ich hab jetzt erstmal hingekriegt den Wert von fl an den Block "flache" zu übergeben und auszudrucken fantastisch oder ?! (defun c:ymh ( / fl ) (setq fl (rtos (vla-get-area(vlax-ename->vla-object(car (entsel "\nselect hatch !\n")))))) (if (/= fl nil) (command "_-insert" "flache" (getpoint "\npik point\n") "1" "1" "0" fl) ) ) Gruss DD
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
gmk Mitglied Dipl.-Ing.(FH) Vermessung
Beiträge: 667 Registriert: 23.10.2002 Autocad 2004, WS CadCompass, Normica V2000, WinXP Prof., AMD Athlon 64 X2, 2GB, NVIDIA GeForce 7600GS, HP1055CM
|
erstellt am: 09. Dez. 2009 15:55 <-- editieren / zitieren --> Unities abgeben: Nur für cadplayer
|
cadplayer Ehrenmitglied CADniker
Beiträge: 1832 Registriert: 28.04.2009
|
erstellt am: 09. Dez. 2009 16:08 <-- editieren / zitieren --> Unities abgeben:
Jo danke Also soweit ich weiss, steht in der Assoc-liste von hatch-element keine Angabe zur Flächengrösse, deshalb bin ich gezwungen jede Schaffur über die Einzelauswahl zu picken. Die Schwierigkeit für mich besteht nun darin: wenn ich den Layer von der gewählten Fläche als zusätzliches Attribut mit in den Block flache einfügen will, muss ich die Abfrage über entget durchführen (Layername unter DXFcode 8). Aber das ist ja Schwachsinn Gibts da eine Lösung für ?
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
CADmium Moderator Maschinenbaukonstrukteur
Beiträge: 13508 Registriert: 30.11.2003 .
|
erstellt am: 09. Dez. 2009 16:15 <-- editieren / zitieren --> Unities abgeben: Nur für cadplayer
|
gmk Mitglied Dipl.-Ing.(FH) Vermessung
Beiträge: 667 Registriert: 23.10.2002 Autocad 2004, WS CadCompass, Normica V2000, WinXP Prof., AMD Athlon 64 X2, 2GB, NVIDIA GeForce 7600GS, HP1055CM
|
erstellt am: 09. Dez. 2009 16:34 <-- editieren / zitieren --> Unities abgeben: Nur für cadplayer
Zitat: Original erstellt von cadplayer: Jo danke Also soweit ich weiss, steht in der Assoc-liste von hatch-element keine Angabe zur Flächengrösse, deshalb bin ich gezwungen jede Schaffur über die Einzelauswahl zu picken.
??? den Satz versteh' ich nicht. Der Unterschied zw. SSGET und ENTSEL besteht doch nur darin, dass SSGET mehrere Objekte und ENTSEL ein Objekt zurück gibt (abgesehen vom Pickpunkt bei ENTSEL). SSGET durch ein Schleife gejagt ergibt doch dann wieder einzelne Objekte an die du mit ENTGET an Gruppencode 8 rankommst. Daher auch mein Tipp oben mit dem Überführen eines AWS in eine LISTE (und dann mit FOREACH abarbeiten; ich denke 99% aller user hier haben so eine Funktion in ihrer Bibliothek) kombiniert mit den Zeilen von Thomas (SETQ aws (SSGET '((0 . hatch)))) (IF (>>>hier funktion aws-nach-liste<<< ) (FOREACH n aws (in n steht dann jeweils das "Einzelobjekt") (setq LAYER (cdr(assoc 8 (entget n)))) (setq FL(vl-princ-to-string(vla-get-area(vlax-ename->vla-object n)))) ) (command "_-insert" "flache" (getpoint "\npik point\n") "1" "1" "0" fl LAYER) ) ;foreach ) ;if Ciao Georg ------------------ http://www.xxx-tausend.info Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
gmk Mitglied Dipl.-Ing.(FH) Vermessung
Beiträge: 667 Registriert: 23.10.2002 Autocad 2004, WS CadCompass, Normica V2000, WinXP Prof., AMD Athlon 64 X2, 2GB, NVIDIA GeForce 7600GS, HP1055CM
|
erstellt am: 09. Dez. 2009 16:37 <-- editieren / zitieren --> Unities abgeben: Nur für cadplayer
|
CADmium Moderator Maschinenbaukonstrukteur
Beiträge: 13508 Registriert: 30.11.2003 .
|
erstellt am: 09. Dez. 2009 16:41 <-- editieren / zitieren --> Unities abgeben: Nur für cadplayer
|
cadplayer Ehrenmitglied CADniker
Beiträge: 1832 Registriert: 28.04.2009
|
erstellt am: 09. Dez. 2009 17:12 <-- editieren / zitieren --> Unities abgeben:
|
cadffm Moderator 良い精神
Beiträge: 21533 Registriert: 03.06.2002 Alles
|
erstellt am: 09. Dez. 2009 22:43 <-- editieren / zitieren --> Unities abgeben: Nur für cadplayer
Auch wenn es dir im 2008er nicht hilft: mit 2010 habe ich auch bei dieser Schraffur kein Problem ! In 2008 kann ich es jedoch nachvollziehen. Das ist genau so eine Schraffur zu der CADmium bereits anmerkte das Brischke/CADffm darüber etwas schonmal geschrieben haben -> Schraffur ohne die Eigenschaft "Fläche", ist im Eigenschaftenfenster zu prüfen.. ------------------ die alte SUCHfunktion.. - System-Angaben - User:FAQ(Adesk) Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
cadplayer Ehrenmitglied CADniker
Beiträge: 1832 Registriert: 28.04.2009
|
erstellt am: 10. Dez. 2009 08:37 <-- editieren / zitieren --> Unities abgeben:
Hi! ich konnte, den Artikel leider nicht finden... Hier ein kurzes Fazit, um vielleicht auch weiter Anregungen zu geben. Problemstellung für mich (war). Flächen von Ellipsen und Kreisen sind nicht ohne weiteres mit Autocad ermittelbar. Ein Weg ist: diese Zeichenelemente in plines umzuwandeln (via lisp-einsatz), um so die Eigenschaften mittels area abzurufen. Weg 2 wäre: alle diese Flächen mit hatch zu schraffieren für "area-zugriff" Vorteil bei Flächen mit Aussparungen, schnelles Endergebnis Problem ist aber unter Autocad 2008, das Flächenangaben von Schraffuren, die einen elliptischen Hintergrund besitzen nur teilweise im Eigenschaftsfenster angezeigt werden. Vielen Dank allen, für die kräftige Unterstützung - ich bin begeistert Gruss cp Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
cadffm Moderator 良い精神
Beiträge: 21533 Registriert: 03.06.2002 Alles
|
erstellt am: 10. Dez. 2009 09:08 <-- editieren / zitieren --> Unities abgeben: Nur für cadplayer
Oder man nimmt eine Blockreferenz mit Attribut, als Attributwert ein SchriftFELD und dieses verlinkt man auf die jeweilige Schraffur, das ganze 2x damit einmal die Fläche und einmal der Layer ausgelesen wird, das ganze kann man dann gleich nach Excel exportieren und fertig - immer aktuelle Angaben in den Attributen. Aber wer Lisp nutzen kann der nutzt es eben auch. Hier, ich habe den Link dank Brischke wieder gefunden: KLICK!
------------------ die alte SUCHfunktion.. - System-Angaben - User:FAQ(Adesk) Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
cadplayer Ehrenmitglied CADniker
Beiträge: 1832 Registriert: 28.04.2009
|
erstellt am: 11. Dez. 2009 09:46 <-- editieren / zitieren --> Unities abgeben:
@cadffm Klar funzt auch... In der Variable FL steht der Flächenwert und wird als Zeichenkette generiert. Also quasi nur ein "dummer" Text. Was müsste ich tun, um nur 2 Nachkommastellen zu erhalten ? PS: rtos spricht ja nur eine Zahl an, keinen Text. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
gmk Mitglied Dipl.-Ing.(FH) Vermessung
Beiträge: 667 Registriert: 23.10.2002 Autocad 2004, WS CadCompass, Normica V2000, WinXP Prof., AMD Athlon 64 X2, 2GB, NVIDIA GeForce 7600GS, HP1055CM
|
erstellt am: 11. Dez. 2009 10:11 <-- editieren / zitieren --> Unities abgeben: Nur für cadplayer
|
cadplayer Ehrenmitglied CADniker
Beiträge: 1832 Registriert: 28.04.2009
|
erstellt am: 11. Dez. 2009 10:31 <-- editieren / zitieren --> Unities abgeben:
|
CADmium Moderator Maschinenbaukonstrukteur
Beiträge: 13508 Registriert: 30.11.2003 .
|
erstellt am: 11. Dez. 2009 10:35 <-- editieren / zitieren --> Unities abgeben: Nur für cadplayer
|
cadplayer Ehrenmitglied CADniker
Beiträge: 1832 Registriert: 28.04.2009
|
erstellt am: 11. Dez. 2009 11:27 <-- editieren / zitieren --> Unities abgeben:
gefi... eingeschädelt. Ist klar ActiveX-funktionen - hab halt keine Ahnung davon. Aber man braucht wirklich nur zu lesen, dass (vl-princ-to-string(vla-get-area bereits eine Umformung von Zahl->String vornimmt. Danke und tschau.
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |