Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  Rund um AutoCAD
  Block in Polylinie

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:  Block in Polylinie (8896 mal gelesen)
FlorianP
Mitglied
Verm.-Ing


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

Beiträge: 44
Registriert: 04.12.2002

AutoCAD Map 2000i

erstellt am: 28. Okt. 2003 11: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 Forum,

hat jemand schon für folgendes Problem eine Lösung oder auch ein Konzept über die Vorgehensweise.

Ich hab einige geschlossene Polylinien. Dazu Blöcke, die wild verstreut sind.

Nun sollte ich wissen, welcher Block in welchem Polygon sich befindet, oder welches Polygon welche Blöcke einschließt.

Gibt es für diese Problemstellung irgend eine Standardprozedur bzw. Lösungen oder bleibt mir nichts anderes übrig als über einige Auswahlsätze die entsprechenden Objekte zu suchen?

Das Problem bei den Polylinien ist, dass es relativ komplexe Polylinien sein können (z.B. Kreisbögen).

Gruß Florian

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

Brischke
Ehrenmitglied V.I.P. h.c.
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: 4171
Registriert: 17.05.2001

AutoCAD 20XX, defun-tools

erstellt am: 28. Okt. 2003 11:50    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 FlorianP 10 Unities + Antwort hilfreich

Hallo Florian,

anbei eine einfache Lösung, die allerdings noch keine Kreisbögen berücksichtigt. Das könnte man auch noch reinbringen, ist aber etwas aufwendiger.
Zunächst mal die LISP-Datei laden.
Baue Dir am besten eine Schaltfläche mit folgendem Inhalt (sel_blk).
Dann startest du einfach einen Befehl Schieben/Löschen... und klickst auf die Schaltfläche .. die Polylinie wählen -> Blöcke sind ausgewählt.

Code:

(vl-load-com)
(defun sel_blk ( / pl)
  (princ "\nUmgrenzungLWPolylinie wählen:")
  (setq pl (ssget "_:S" '((0 . "LWPOLYLINE"))))
  (if pl
    (ssget "_WP"
          (mapcar 'cdr(vl-remove-if-not '(lambda (K)
                                            (= (car K) 10)
                                            )
                        (entget (ssname pl 0))))
          '((0 . "INSERT"))
          )
    )
  )

Bei Fragen ...

Grüße Holger

------------------
Holger Brischke
(defun - Lisp over night!
AutoLISP-Programmierung für AutoCAD
NEU: AutoLISP- Projektschulung
NEU: Praxisorientierte Schulungen und Workshops durch die bekannten CAD.de Moderatoren
AutoCAD, AutoCAD LT, AutoCAD Mechanical, Mechanical Desktop, Architectural Desktop

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

Brischke
Ehrenmitglied V.I.P. h.c.
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: 4171
Registriert: 17.05.2001

AutoCAD 20XX, defun-tools

erstellt am: 28. Okt. 2003 12:13    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 FlorianP 10 Unities + Antwort hilfreich

Hallo Florian,

mir ist auch noch eine einfache, den Kreisbögen angenäherte Lösung eingefallen. Jede Polylinie wird nun in 100 gleichlange Segmente geteilt. Das kann nun sein, dass dies für deinen Anwendungsfall noch zu grob ist, dann setze diese Zahl einfach hoch.

Code:

(vl-load-com)
(defun sel_blk ( / pl pll abst step ptli)
  (princ "\nUmgrenzungLWPolylinie wählen:")
  (setq pl (ssget "_:S" '((0 . "LWPOLYLINE"))))
  (if pl
    (progn
      (setq pl (vlax-ename->vla-object (ssname pl 0))
            pll (vlax-curve-getDistAtParam pl (vlax-curve-getEndParam pl))
            ptli (cons (vlax-curve-getStartPoint pl) ptli)
            abst (/ pll 100);Jede Poyllinie wird in 100 gleichlange Segmente zerlegt
            step abst
            )
      (while (<= abst pll)
        (setq ptli (cons (vlax-curve-getPointAtDist pl abst) ptli)
              abst (+ abst step)
              )
        )
      (ssget "_WP"
            ptli
            '((0 . "INSERT"))
            )
      )
    )
  )


Bei Fragen ...

Grüße Holger

------------------
Holger Brischke
(defun - Lisp over night!
AutoLISP-Programmierung für AutoCAD
NEU: AutoLISP- Projektschulung
NEU: Praxisorientierte Schulungen und Workshops durch die bekannten CAD.de Moderatoren
AutoCAD, AutoCAD LT, AutoCAD Mechanical, Mechanical Desktop, Architectural Desktop

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

FlorianP
Mitglied
Verm.-Ing


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

Beiträge: 44
Registriert: 04.12.2002

AutoCAD Map 2000i

erstellt am: 28. Okt. 2003 13: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

Hallo Holger,

zuerst mal Vielen Dank für deine Antworten.
Sie sind echt Klasse!!!

Nur eins geht momentan noch nicht, und ich denke du weisst bestimmt eine Antwort drauf.

Leider werden nur die Blöcke ausgewählt, die komplett im Polygon drin sind. Diejenigen, die von dem Polygon geschnitten werden sind nicht dabei.
Wird bei der Option _WP nicht der Einfügepunkt des Blockes verwendet?
Gibt es eine Option in der dieser Einfügepunkt ausgewertet wird?
Oder funktioniert das nur über ein kreuzen?

Dann noch was anderes.
von der Option _:S hab ich noch nichts gehört, ich finde sie auch in der Hilfe nicht. Gibt es eine Liste in der alle möglichen Auswahloptionen enthalten sind?

Vielen Dank

Florian

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

cadffm
Moderator
良い精神




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

Beiträge: 21533
Registriert: 03.06.2002

System: F1
und Google

erstellt am: 28. Okt. 2003 13:08    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 FlorianP 10 Unities + Antwort hilfreich

"_CP" --> CrossPolygon = KP = Kreuzen Polygon ....

"_:S" --> nur EIN Objekt wählen.

gehe mal in die Entwicklerhilfe , Stichw. "ssget"

------------------
- Sebastian Mattis - CAD.de-User Treffen JEDEN Tag !

[Diese Nachricht wurde von cadffm am 07.08.2009 editiert.]

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

Brischke
Ehrenmitglied V.I.P. h.c.
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: 4171
Registriert: 17.05.2001

AutoCAD 20XX, defun-tools

erstellt am: 28. Okt. 2003 13: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 FlorianP 10 Unities + Antwort hilfreich

Hallo Florian,

zuerst ein Auszug aus der Hilfe (Acad2000) zu (ssget)

Zitat:

Creates a selection set from the selected object
(ssget [sel-method] [pt1 [pt2]] [pt-list] [filter-list])

Selection sets can contain objects from both paper and model space, but when the selection set is used in an operation, ssget filters out objects from the space not currently in effect. Selection sets returned by ssget contain main entities only (no attributes or polyline vertices).

Arguments

sel-method

A string that specifies the object selection method. Valid selection methods are:
C  Crossing selection.
CP  Cpolygon selection (all objects crossing and inside of the specified polygon).
F  Fence selection.
I  Implied selection (objects selected while PICKFIRST is in effect).
L  Last visible object added to the database.
P  Last selection set created.
W  Window selection.
WP  WPolygon (all objects within the specified polygon).

X  Entire database. If you specify the X selection method and do not provide a filter-list, ssget selects all entities in the database, including entities on layers that are off, frozen, and out of the visible screen.
:E  Everything within the cursor's object selection pickbox.
:N  Call ssnamex for additional information on container blocks and transformation matrices for any entities selected during the ssget operation. This additional information is available only for entities selected via graphical selection methods such as Window, Crossing, and point picks.

Unlike the other object selection methods, :N may return multiple entities with the same entity name in the selection set. For example, if the user selects a subentity of a complex entity such as a BlockReference, PolygonMesh, or old style polyline, ssget looks at the subentity that is selected when determining if it has already been selected. However,  ssget actually adds the main entity (BlockReference, PolygonMesh, etc.) to the selection set. The result could be multiple entries with the same entity name in the selection set (each will have different subentity information for ssnamex to report).

:S  Allow single selection only.



Nun zur ersten Frage. Ist der Einfügepunkt nicht innerhalb des Polygons, dann ist auch der Block nicht vollständig enthalten, wenn das so ist, dann die Option _WP in _CP ändern. dass ist dann PolygonKreuzen.

Bei Fragen ...

Grüße Holger

------------------
Holger Brischke
(defun - Lisp over night!
AutoLISP-Programmierung für AutoCAD
NEU: AutoLISP- Projektschulung
NEU: Praxisorientierte Schulungen und Workshops durch die bekannten CAD.de Moderatoren
AutoCAD, AutoCAD LT, AutoCAD Mechanical, Mechanical Desktop, Architectural Desktop

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

autocart
Mitglied
Technischer Redakteur


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

Beiträge: 695
Registriert: 08.09.2003

erstellt am: 07. Aug. 2009 17:33    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 FlorianP 10 Unities + Antwort hilfreich

Einerseits entschuldigung, dass ich diesen alten Thread nochmals hochbringe.

Andererseits gehört hier etwas für "Sucher" und "Nachleser", wie mich, ausgebessert bzw. upgedated (falls es denn früher stimmte).
Und dann hab ich auch noch eine Frage.

Ich hab es jedenfalls gerade ausprobiert und bei mir ist dem ssget der Einfügepunkt des Blocks vollkommen Wurscht. Es scheint doch eher NUR auf die Geometrie an sich anzukommen.

Und nun noch zu meiner Frage:
Früher habe ich meist mit (ssget "_W" ...) gearbeitet. Bei meinem aktuellen Programm verwende ich aber (ssget "_WP" ...). Ist da schon mal jemand der gravierende Unterschied aufgefallen? (Bei der Suche im Net fand ich nichts - unverständlich). "_W" wählt Objekte innerhalb des Fensters und auch Objekte, die das Fenster von innen aus berühren. "_WP" wählt nur Objekte, die komplett innerhalb des Fenster liegen und lässt die, die das Fenster von innen berühren, weg.

Ich habe stundenlang debuggen müssen, bis ich draufkam, warum mein Proggi nicht so funkt, wie ich es will.

Weiß jemand eine fertige oder einfache Lösung, wie man bei einem Polygon das Verhalten von "_W" nachbauen kann? Danke.

------------------
Gruß, Stephan
www.stbartl.at

"Every thing should be made as simple as possible but not simpler." - Albert Einstein

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


Ex-Mitglied

erstellt am: 07. Aug. 2009 19:01    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat

Hi,

wenn ich es richtig verstanden habe, dann suchst Du '_CP' (crossing polygon).

Wobei ich eben nicht sicher bin, ob ich's richtig verstanden habe, denn '_W' (fenster) hat immer nur mit den Geometrieteilen funktioniert, die 'vollständig innerhalb' sind, die Selektionsmethode '_C' (kreuzen) wäre die Methode, mit der vollständig UND 'teilweise innerhalb' aufgefunden wird.

- alfred -

------------------
www.hollaus.at

autocart
Mitglied
Technischer Redakteur


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

Beiträge: 695
Registriert: 08.09.2003

erstellt am: 07. Aug. 2009 19:30    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 FlorianP 10 Unities + Antwort hilfreich

Hallo alfred!
Danke für deinen Hilfe-Versuch.

Ich muss aber wohl den Satz
"_W" wählt Objekte innerhalb des Fensters und auch Objekte, die das Fenster von innen aus berühren.
noch erweitern:
"_W" wählt Objekte innerhalb des Fensters und auch Objekte, die das Fenster von innen aus berühren aber nicht nach außen "weiterverlaufen".
Zum Beispiel Linien, die zuvor mit _trim auf das Polygon/das Fenster gestutzt wurden, werden mit "_W" gewählt, mit "_WP" aber nicht.
Alles klar? Ansonsten bitte ausprobieren. Ich weiß nicht, wie ich es noch anders erklären soll.

------------------
Gruß, Stephan
www.stbartl.at

"Every thing should be made as simple as possible but not simpler." - Albert Einstein

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


Ex-Mitglied

erstellt am: 07. Aug. 2009 21:08    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat

Hi Stephan,

ich fürchte, da verläßt Du Dich auf mathematische (Un-)Genauigkeit, und diese Sonderfälle der Berührung der Grenze prüfe ich immer in einer getrennten zweien Routine (nachdem ich zuerst mit '_C' bzw. mit '_CP' selektiert habe.

Die Schnittpunkte mit der Grenze bis zur letzten Dezimalstelle (und darüber hinaus) sind nun mal mit Toleranz (je nach Position der Geometrie, ob geodätisch und damit schon viele Vorkommastellen oder in der Nähe zu 0,0,0) zu überprüfen.

- alfred -

------------------
www.hollaus.at

autocart
Mitglied
Technischer Redakteur


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

Beiträge: 695
Registriert: 08.09.2003

erstellt am: 07. Aug. 2009 21: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 Nur für FlorianP 10 Unities + Antwort hilfreich

Nagut, dann muss ich es extra prüfen. Habs fast befürchtet.
Danke.

------------------
Gruß, Stephan
www.stbartl.at

"Every thing should be made as simple as possible but not simpler." - Albert Einstein

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

autocart
Mitglied
Technischer Redakteur


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

Beiträge: 695
Registriert: 08.09.2003

erstellt am: 08. Aug. 2009 14: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 FlorianP 10 Unities + Antwort hilfreich

Ich wollte nur noch sagen, selbst wenn es hier um mathematische (Un)Genauigkeiten geht, so ändert das doch nichts daran, dass die Optionen "_W" und "_WP" unterschiedliche Ergebnisse liefern. Dazu Abschließend noch ein kleines Code-Beispiel:
Code:
(defun c:WindowTest (/ osm ss1 ss2 enm)
(setq osm (getvar "OSMODE"))
(setvar "OSMODE" 0)
(command "_.RECTANGLE" "1,0" "3,3" "")
(setq enm (entlast))
(command "_.LINE" "0,1" "2,1" "")
(command "_.LINE" "0,2" "2,2" "")
(command "_.TRIM" enm "" (list (entlast) (cdr(assoc 10(entget(entlast))))) "")
(command "_.ZOOM" "_W" "-1,-1" "4,4")

(setq ss1 (ssget "_W" '(1 0) '(3 3)))
(setq ss2 (ssget "_WP" '((1 0) (1 3) (3 3) (3 0))))

(princ (strcat "\nss2: " (if ss2 "something" "nothing")))
(princ (strcat "\nss1: highlighted"))
(sssetfirst nil ss1)
(setvar "OSMODE" osm)
(princ)
)



"_WP" wählt hier nichts aus.
"_W" wählt die gestutzte Linie und das Rechteck aus.

------------------
Gruß, Stephan
www.stbartl.at

"Every thing should be made as simple as possible but not simpler." - Albert Einstein

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


Ex-Mitglied

erstellt am: 08. Aug. 2009 20:51    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat

Hi,

zugegeben, Dein Beispiel zeigt die von Dir beschriebene unterschiedliche Wirkungsweise. Ich habe auch probiert, mit normalen '_select' '_wp' und dann mit Objektfängen den Rechteckspunkten zu folgen und auch hier kommt gleiches wie in Lisp zustande (und auch in VBA probiert).

Nun ist die Frage: 'was ist früher' aus Deiner Sicht als es noch funktioniert haben sollte. Ich hab's jetzt mal bis 2007 zurück probiert und da ist das Verhalten gleich wie 2010.

Einzige (in diesem Fall schnell gefundene) Variante wäre (kommt wieder meine Toleranz):

Code:
(setq ss2 (ssget "_WP" '((0.9999 -0.0001) (0.9999 3.0001) (3.0001 3.0001) (3.0001 -0.0001) (0.9999 -0.0001))))

Aber zugegeben, das ist für Rechtecke natürlich leichter zu finden als für beliebige Fenster-Polygone.

- alfred -

------------------
www.hollaus.at

autocart
Mitglied
Technischer Redakteur


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

Beiträge: 695
Registriert: 08.09.2003

erstellt am: 09. Aug. 2009 02: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 FlorianP 10 Unities + Antwort hilfreich

Juhuu, endlich wurde ich (fast) verstanden.

Fast, deshalb, weil mit "früher" meinte ich, dass ich früher eigentlich nur die Option "_W" benutzte (hat damals genauso funktioniert, wie jetzt) und mir daher damals der Unterschied zu "_WP" nicht auffiel bzw. ich zuerst automatisch annahm, dass "_WP" genauso funktionieren würde, wie "_W". Dass dem nicht so war, führte mich schließlich dazu, hier zu posten. - Hoffe, ich drücke mich jetzt verständlich aus.

Aber egal - ich hab jetzt folgende Lösung für mich gefunden:

Code:
(defun c:WP-Auswahl+Toleranz (/ osm ogt pntLL pntUR enm offsetDistance pntlst ss)
;*** VORBEREITUNGEN FÜR DAS BEISPIEL:
(setq osm (getvar "OSMODE"))
(setvar "OSMODE" 0)
(setq pntLL '(1 0)
      pntUR '(3 3)
);setq
(command "_.RECTANGLE" pntLL pntUR "")
(setq enm (entlast))
(command "_.LINE" "0,1" "2,1" "")
(command "_.LINE" "0,2" "2,2" "")
(command "_.ZOOM" "_W" "-1,-1" "4,4")
(command "_.TRIM" enm "" (list (entlast) (cdr(assoc 10(entget(entlast))))) "")
;*** AB HIER DER HAUPTTEIL:
(setq offsetDistance
  0.00001 ;->hier lässt sich die Toleranz einstellen
);setq
(setq ogt (getvar "OFFSETGAPTYPE"))
(setvar "OFFSETGAPTYPE" 0)
(command "_.offset" "_e" "_n" "_l" "_s"
                offsetDistance
                enm
                "0,0";->dieser Punkt muss außerhalb des Polygons liegen und sollte natürlich dynamisch erzeugt werden
                ""
);command
(foreach item (entget (entlast))
  (if(= 10(car item))
    (setq pntlst (cons (cdr item) pntlst))
  );if
);foreach
(entdel (entlast))
(setq ss(ssget "_WP" pntlst))

(sssetfirst nil ss)
(setvar "OFFSETGAPTYPE" ogt)
(setvar "OSMODE" osm)
)


Der Einfachheit halber hab ich jetzt nur ein Rechteck genommen. Natürlich funkt das ganze auch mit einem anderen Polygon.
Bitte um Kritik und Verbesserungsvorschläge.

------------------
Gruß, Stephan
www.stbartl.at

"Every thing should be made as simple as possible but not simpler." - Albert Einstein

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

autocart
Mitglied
Technischer Redakteur


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

Beiträge: 695
Registriert: 08.09.2003

erstellt am: 12. Aug. 2009 03:51    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 FlorianP 10 Unities + Antwort hilfreich

'oppala...

Dass mir da niemand auf die Finger geklopft hat?
Da das Rechteck eine LWPolylinie ist und das durch "_.offset" erzeugte Entity dann ja auch, ist der Codeabschnitt
(foreach item (entget (entlast))
  (if(= 10(car item))
    (setq pntlst (cons (cdr item) pntlst))
  );if
);foreach
doch eher gefährlich. Die Punkte gehören übersetzt, also so:

Code:
(foreach item (entget (entlast))
  (if(= 10(car item))
    (setq pntlst (cons (trans (cdr item) (entlast) 0) pntlst));WKS ist 0, aktuelles BKS wäre 1
  );if
);foreach


EDIT: Könnte ein Mod diesen Beitrag eventuell bitte ins LISP-Forum schieben, danke.

------------------
Gruß, Stephan
www.stbartl.at

"Every thing should be made as simple as possible but not simpler." - Albert Einstein

[Diese Nachricht wurde von autocart am 12. Aug. 2009 editiert.]

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

EndlessStorm
Mitglied



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

Beiträge: 10
Registriert: 29.07.2014

erstellt am: 29. Jul. 2014 12:13    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 FlorianP 10 Unities + Antwort hilfreich


bild.png

 
Hallo zusammen,

bitte entschuldigt, dass ich einen so alten Post rauskrame 

Kann mir evtl jemand das Script so umschreiben, dass ich innerhalb eines Blocks, Linien auffinden kann zum löschen?

Ich habe hier in der Zeichnung rund 2800 automatisiert freigestellte Grenzzeichen, leider blieben bei überlappungen von Grenzpunkten kurze Linien übrig.
Aufgrund der Tatsache, dass ich nicht alle kurzen Linien löschen kann, ist ein einfacher Filter hier unmöglich...

Im Anhang seht ihr, warum ich nicht einfach alle kurzen Linien löschen darf.

Freigestellt habe ich die Blöcke, indem ich zur Hilfe einen Kreis erstellt habe und dann etrim genutzt habe aus extrim.

Genutzt wird ACAD 2013 mit ExpressTools.

Vielleicht hat jemand von euch eine Idee, wie das umzusetzen ist. 

Vielen vielen Dank im voraus.
EndlessStorm


Apropos: weiß zufällig jemand, warum beim Befehl "etrim" manchmal auch komplette Linien, die nicht im Mittelpunkt des Kreises enden, sondern den Kreis nur durchlaufen, komplett gelöscht werden, anstatt getrimmt zu werden?

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

Fiedelzastrow
Mitglied
Architekt / Bauzeichner


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

Beiträge: 993
Registriert: 05.07.2007

Win XP
AutoCAD 2006
AutoCAD 2009
AutoCAD 2012 LT

erstellt am: 29. Jul. 2014 13:58    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 FlorianP 10 Unities + Antwort hilfreich

Hallo und herzlich Wilkommen bei cad.de

mit dem Befehl Sauswahl kannst Du nach Linien filtern, deren Länege kleiner einer bestimmten Länge ist.
Damit sollte es möglich sein, die ganz kurzen Linien zu "packen".
Gruß
Robert

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

EndlessStorm
Mitglied



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

Beiträge: 10
Registriert: 29.07.2014

erstellt am: 29. Jul. 2014 14:02    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 FlorianP 10 Unities + Antwort hilfreich

Hallo, das funktioniert leider nicht, wie im Bild zu sehen ist, werden auch Flurstücksgrenzen gelöscht werden, die zwischen zwei Grenzpunkten liegen. Gesucht sind ausschließlich die, die innerhalb eines (aller) Grenzzeichen sitzen...

Wenn es mit Blöcken zu kompliziert ist, kann auch vom Zwischenschritt ausgegangen werden, wo der Kreis vorhanden ist.

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

Fiedelzastrow
Mitglied
Architekt / Bauzeichner


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

Beiträge: 993
Registriert: 05.07.2007

Win XP
AutoCAD 2006
AutoCAD 2009
AutoCAD 2012 LT

erstellt am: 29. Jul. 2014 14:14    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 FlorianP 10 Unities + Antwort hilfreich

Hallo EndlessStorm,
da ich auf Deinem Bild nur etwas sehen kann, aber leider nicht navollziehen kann, wäre es schön, wenn Du einen Ausschnitt aus Deinem Plan zur Verfügung stellen würdest. Leere (Neue) Zeichnung mit den Elementen von Deinem Bild würde schon reichen.

Gruß
Robert

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

EndlessStorm
Mitglied



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

Beiträge: 10
Registriert: 29.07.2014

erstellt am: 29. Jul. 2014 14:18    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 FlorianP 10 Unities + Antwort hilfreich


Zeichnung3.dwg

 
OK, habe ein Stück angefügt. Der Layer der zu löschen Linien ist stets identisch, kann also zum Filtern mit verwendet werden.
Wie man erkennt, befinden sich innerhalb der gelben Blöcke (Kreise) noch Linien, DIE, und nur die müssen noch automatisiert gelöscht werden.

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

Fiedelzastrow
Mitglied
Architekt / Bauzeichner


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

Beiträge: 993
Registriert: 05.07.2007

Win XP
AutoCAD 2006
AutoCAD 2009
AutoCAD 2012 LT

erstellt am: 29. Jul. 2014 14:25    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 FlorianP 10 Unities + Antwort hilfreich


lange.png

 
Hallo,
mit diesen Einstellung konnte ich alle ganz kurzen Linien löschen, ohne die anderen zu beeinträchtigen.

Gruß
Robert

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

EndlessStorm
Mitglied



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

Beiträge: 10
Registriert: 29.07.2014

erstellt am: 29. Jul. 2014 14:30    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 FlorianP 10 Unities + Antwort hilfreich


Zeichnung3.dwg

 
Wenn das so einfach wäre, hätte ich mich nicht hier im Forum angemeldet, also bitte erst meine Posts lesen und dann was kluges sagen. Danke.

Für dein Szenario habe ich den einen Grenzpunkt mal verschoben um dir zu zeigen, dass es nach wie vor nicht durch so easy Filter zu machen ist.


[edit]
Ist es auch ggf möglich, alles zu löschen, was sich hinter einer gesetzten Schraffur befindet??? Dann würde ich es mir sparen mit dem Extrim, sondern Schraffuren setzen...

[Diese Nachricht wurde von EndlessStorm am 29. Jul. 2014 editiert.]

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

Fiedelzastrow
Mitglied
Architekt / Bauzeichner


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

Beiträge: 993
Registriert: 05.07.2007

Win XP
AutoCAD 2006
AutoCAD 2009
AutoCAD 2012 LT

erstellt am: 29. Jul. 2014 15: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 FlorianP 10 Unities + Antwort hilfreich

Hallo EndlessStorm,
dann mal ein paar (wie ich finde) kluge Anmerkungen.
Ich würde die Linien am Kreis nicht stutzen, nachträgliches Messen und evt. verschieben wird so einfacher (mit Endpunkt fangen)
Wenn ich die Linien im Kreis nicht sehen will und der Kreis ein Block ist....
Einfach den Block im Blockeditor bearbeiten und mit einer solid Schraffur (Farbe nach wahl) füllen.
Gruß
Robert

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

jupa
Ehrenmitglied V.I.P. h.c.
Ruheständler


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

Beiträge: 6050
Registriert: 16.09.2004

Windows 10 64bit, ACAD Rel. 14 - ACAD 2023

erstellt am: 29. Jul. 2014 15: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 FlorianP 10 Unities + Antwort hilfreich

Zitat:
Original erstellt von Fiedelzastrow:
Block im Blockeditor bearbeiten und mit einer solid Schraffur (Farbe nach wahl) füllen.

Dann würde man aber bei zwei geringfügig geneneinander versetzten Kreisen (wie oben in Bild.png zu sehen) einen der beiden auch teilweise mit abdecken. (Meine erste Idee wäre auch ein im Block enthaltenes Wipeout gewesen, aber aus ebendiesem Grund verworfen).

Jürgen

------------------
Bildung kommt nicht vom Lesen, sondern vom Nachdenken über das Gelesene. (Carl Hilty)

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

EndlessStorm
Mitglied



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

Beiträge: 10
Registriert: 29.07.2014

erstellt am: 29. Jul. 2014 16: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 FlorianP 10 Unities + Antwort hilfreich


bild-vorher.png


bild-nachher.png

 
Rein Optisch hätte ich mir auch was einfallen lassen können. Blöderweise ist das nur mit optischem anpassen nicht getan... Die Linien müssen unbedingt weg...

Da ich den einen Schritt mit dem Freistellen rückgangig machen kann, wären denn eine andere Möglichkeit sinnvoller, einfacher, sicherer, um alle Linien innerhalb des zu erstellenden Blockes zu entfernen?

Da bereits Blöcke vorhanden sind und diese durch die hier dargestellten ersetzt werden müssen, habe ich alle Optionen, wie ich vorgehe. Derzeit hole ich mir die Koordinaten des alten Blocks, setze auf diesen einen Kreis mit r=0,675 (Block-Radius) und übergebe den Kreis der Methode "etrim" (leicht Modifiziert). Dieses stellt den Kreis dann frei (leider löscht sie manchmal auch komplette Linien?!). Anschließend lösche ich den Kreis und setze den neuen Block darauf.


Ich poste hier mal einen Teil des Codes, vielleicht könnt ihr mir den Code bisl anpassen. Apropo, in den beigefügten Bildern ist zu sehen, was das Tool noch so anrichtet, gelegentlich killt es komplette Linien, wenn diese nur durch den Kreis führen.

Code:
...
(Prompt "\nStart: #01 Grenzzeichen")
(setq ss (ssget "X" '((0 . "INSERT")(2 . "0118*,0117*")(41 . 0.375))))
(cond (ss
(grenzzeichen ss "KAT04" "1019_Vermessungspunkte+Text"))(t (Prompt "    ...#01 Grenzzeichen nicht gewechselt")))
(setq ss nil)(setq ss nil)
...

(defun grenzzeichen (auswahl block layer)
(Prompt "\n...Ersetze Grenzzeichen...")
(setq count 0)
(repeat (sslength auswahl)
(setq temp (ssname auswahl count))
(setq daten (entget temp))
;(setq scale (cdr(assoc 41 daten)))
(setq liste (ssadd)) ; leere neue Auswahlliste
(setq objekt(entmake(list '(0 . "CIRCLE")(cons 8 "0")(assoc 10 daten)(cons 40 0.675) )))
(ssadd (entlast) liste) ; add zur neuen Liste
(cond (liste (mextrim liste)))
(setq del (entlast))
(entdel del)
(entdel temp)
;;;;; Block einfügen
(entmake
(list
'(0 . "INSERT")
(cons 2 block)
(cons 8 layer)
(assoc 10 daten)
'(41 . 1.0); X scale
'(42 . 1.0); Y
'(43 . 1.0); Z
); list
)
(setq count (1+ count))
)
;;;;; evtl übrige (doppelte) Kreise entfernen
(setq ss (ssget "X" '((0 . "CIRCLE")(40 . 0.675))))
(cond (ss
(deleteobjekt ss)))
(setq ss nil)
(setq liste nil)
(Prompt "    ...Fertig")
)

;;;;;;;; im Netz gefunden, Urheber ist mir dezeit leider unbekannt

; *******************************************************************************************************************************************
; MExTrim
(defun MExTrim (auswahl / rnd GroupByNum ptonline ptinsideent highlight
                    ss n en ed enA minpt maxpt dx dy pt dxx dyy )
                   
  (vl-load-com)

  (load "extrim.lsp")

  (defun rnd (/ modulus multiplier increment rand)
    (if (not seed)
      (setq seed (getvar "DATE"))
    )
    (setq modulus    65536
          multiplier 25173
          increment  13849
          seed  (rem (+ (* multiplier seed) increment) modulus)
          rand    (/ seed modulus)
    )
  )

  (defun GroupByNum ( l n / f )
    (defun f ( a b )
      (if (and a (< 0 b))
        (cons (car a) (f (setq l (cdr a)) (1- b)))
      )
    )
    (if l (cons (f l n) (GroupByNum l n)))
  )

  (defun ptonline ( pt pt1 pt2 / vec12 vec1p d result )
    (setq vec12 (mapcar '- pt2 pt1))
    (setq vec12 (reverse (cdr (reverse vec12))))
    (setq vec1p (mapcar '- pt pt1))
    (setq vec1p (reverse (cdr (reverse vec1p))))
    (setq vec2p (mapcar '- pt2 pt))
    (setq vec2p (reverse (cdr (reverse vec2p))))
    (setq d (distance '(0.0 0.0) vec12) d1 (distance '(0.0 0.0) vec1p) d2 (distance '(0.0 0.0) vec2p))
    (if (equal d (+ d1 d2) 1e-8) (setq result T) (setq result nil))
    result
  )

  (defun ptinsideent ( pt ent / msp ptt xlin int k kk tst result )
    (vl-load-com)
    (setq msp (vla-get-modelspace (vla-get-activedocument (vlax-get-acad-object))))
    (setq ptt (vlax-curve-getclosestpointto ent pt))
    (setq xlin (vla-addxline msp (vlax-3d-point pt) (vlax-3d-point ptt)))
    (setq int (GroupByNum (vlax-invoke (if (eq (type ent) 'ENAME) (vlax-ename->vla-object ent)) 'intersectwith xlin acExtendBoth) 3))
    (setq int (vl-sort int '(lambda (a b) (< (vlax-curve-getparamatpoint xlin a) (vlax-curve-getparamatpoint xlin b)))))
    (setq k 0)
    (while (< (setq k (1+ k)) (length int))
      (if (and (eq (rem k 2) 1) (ptonline pt (nth (- k 1) int) (nth k int))) (setq tst (cons T tst)) (setq tst (cons nil tst)))
    )
    (setq tst (reverse tst))
    (setq k 0)
    (mapcar '(lambda (x) (setq k (1+ k)) (if (eq x T) (setq kk k))) tst)
    (vla-delete xlin)
    (if kk
      (if (eq (rem kk 2) 1) (setq result T) (setq result nil))
      (setq result nil)
    )
    result
  )

  (setq highlight (getvar "HighLight"))
  (acet-error-init (list
                    (list  "cmdecho" 0
                          "highlight" highlight
                          "regenmode" 1
                              "osmode" 0
                            "ucsicon" 0
                          "offsetdist" 0
                              "attreq" 0
                            "plinewid" 0
                          "plinetype" 1
                            "gridmode" 0
                            "celtype" "CONTINUOUS"
                          "ucsfollow" 0
                            "limcheck" 0
                    )
                    T    ;flag. True means use undo for error clean up.
                    '(if redraw_it (redraw na 4))
                    );list
  );acet-error-init

  ;(prompt "\nSelect closed entities: ")
  (if (setq ss auswahl)
  ;(if (setq ss (ssget (append (list '(-4 . "<or") '(0 . "CIRCLE") '(-4 . "<and") '(0 . "*POLYLINE") '(-4 . "<not") '(-4 . "&=") '(70 . 8) '(-4 . "not>") '(-4 . "&=") '(70 . 1) '(-4 . "and>") '(-4 . "<and") '(0 . "SPLINE") '(-4 . "&=") '(70 . 1) '(-4 . "and>") '(-4 . "<and") '(0 . "ELLIPSE") '(41 . 0.0)) (list (cons 42 (* 2 pi))) (list '(-4 . "and>") '(-4 . "or>")))))
    (progn
      (setq n (sslength ss))
      (while (>= (setq n (1- n)) 0)
        (setq en (ssname ss n) ed (entget en) enA (vlax-ename->vla-object en))
          (vla-getboundingbox enA 'minpoint 'maxpoint)
        (setq
        minpt (vlax-safearray->list minpoint)
        maxpt (vlax-safearray->list maxpoint)
        )
        (setq dx (- (car maxpt) (car minpt)))
        (setq dy (- (cadr maxpt) (cadr minpt)))
        (setq pt '(0.0 0.0 0.0))
        (while (not (ptinsideent pt en))
          (setq dxx (* dx (rnd)))
          (setq dyy (* dy (rnd)))
          (setq pt (list (+ (car minpt) dxx) (+ (cadr minpt) dyy) 0.0))
        )
        (etrim en pt)
      )
    )
  )
  (acet-error-restore)
  (princ)
)


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

cadwomen
Ehrenmitglied V.I.P. h.c.
Mädchen für fast alles


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

Beiträge: 2966
Registriert: 26.08.2002

ACAD R11 - 2022
(Plant3D)
AVIS
ACAD LT 2013- 2021
ZWCAD 2015 Versuch "nun ja"
[s]History P3D 2012/(13) SP und Hotfix([/s]<P>
Windows 10 / 64 Bit
Xeon CPU 3.5GHz
16GB Ram
NVIDIA Quadro P2000
3x Dell TV100 88P Monitore

erstellt am: 29. Jul. 2014 16:22    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 FlorianP 10 Unities + Antwort hilfreich

mhhh irgend wie ein ganz anderer Code jetzt 

anyway für sowas Bitte das nächste mal ein extra Post im LISP Forum eröffnen

cu cw

------------------
Also ich finde Unities gut ... und andere sicher auch
------------------------------------------------
cadwomen™
Plant ist wie Öl suchen, je tiefer man bohrt desto mehr kommt ans Tageslicht

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

cadwomen
Ehrenmitglied V.I.P. h.c.
Mädchen für fast alles


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

Beiträge: 2966
Registriert: 26.08.2002

ACAD R11 - 2022
(Plant3D)
AVIS
ACAD LT 2013- 2021
ZWCAD 2015 Versuch "nun ja"
[s]History P3D 2012/(13) SP und Hotfix([/s]<P>
Windows 10 / 64 Bit
Xeon CPU 3.5GHz
16GB Ram
NVIDIA Quadro P2000
3x Dell TV100 88P Monitore

erstellt am: 29. Jul. 2014 16: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 FlorianP 10 Unities + Antwort hilfreich

Zitat:
Original erstellt von EndlessStorm:
[B]....
Ich poste hier mal einen Teil des Codes, vielleicht könnt ihr mir den Code bisl anpassen. Apropo, in den beigefügten Bildern ist zu sehen, was das Tool noch so anrichtet, gelegentlich killt es komplette Linien, wenn diese nur durch den Kreis führen.
B]

auch nicht sinnig da Variabeln irgendwo im Code nochmal auftauchen könnten, also ganze Code


cw

------------------
Also ich finde Unities gut ... und andere sicher auch
------------------------------------------------
cadwomen™
Plant ist wie Öl suchen, je tiefer man bohrt desto mehr kommt ans Tageslicht

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

cadffm
Moderator
良い精神




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

Beiträge: 21533
Registriert: 03.06.2002

System: F1
und Google

erstellt am: 29. Jul. 2014 16:32    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 FlorianP 10 Unities + Antwort hilfreich

Ausgerechnet der Code der das trimmen erledigt ist nicht dabei  " und übergebe den Kreis der Methode "etrim" (leicht Modifiziert). Dieses stellt den Kreis dann frei"
Dann könnte man den Fehler suchen anstatt ein Bitte-entferne-mir-die-Probleme-einer-anderen-Routine.lsp zu erschaffen.

Das eigentliche Vorhaben ist ja nicht schwer, durch alle Blockreferenzen oder Kreise:

Suche alle Linien, deren Start und Endpunkt "kleiner-gleich Radius" vom Zentrum/Basispunkt entfernt ist, löschen.

Wie sieht es nach dem copy&paste Raubzug denn nun mit deinem Wissen in Lisp aus?

------------------
CAD on demand GmbH - Beratung und Programmierung rund um AutoCAD

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

EndlessStorm
Mitglied



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

Beiträge: 10
Registriert: 29.07.2014

erstellt am: 29. Jul. 2014 17:05    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 FlorianP 10 Unities + Antwort hilfreich

Raubzug? Sorry, wenn öffentlich Code ausliegt und man nach so etwas sucht, wird man sich den doch näher anschauen/kopieren dürfen für eigene Zwecke? Ich verkaufe die Lisp ja nicht 

Mit der ganzen Lisp wirds gerade schwierig, bin jetzt zuhause...

Also der kopierte Teil ist ausschließlich der, unterhalb des Hinweises im Code. Der Rest ist alles von mir. Da in der Llisp Layer in andere umgelegt werden sowie Texte mit passendem Winkel ersetzt und diverse Blöcke ersetzt werden, dazu nach einiger Auswahl diverse Objekte (Linien, Texte, Schraffuren, etc) gelöscht werden etc, welche ich selbst ausprogrammiert habe, bin ich schon "Fortgeschrittener" in Sachen lisp. Dennoch gibt es einige Funktionen, die ich noch nicht kann. Aber dazu liest man ja in Foren und wenn man Fragen hat, meldet man sich an und fragt nach... oder nicht?

Der fehlende Code sollte bei jedem der die ExpressTools hat, vorhanden sein. Es ist die Funktion EXTRIM in der man suchen muss.

Der von mir "modifizierte" Code ist ganz unten im von mir geposteten, dort sind ausschließlich zwei Zeilen mit richtigem (Originalem) Code auskommentiert (die Benutzereingabe ersetzt durch Übergebene Liste z.B.). Gut erkennbar, welche Zeilen Code ich ersetzt habe.


Wie geht man denn vor, wenn ich alle Linien innerhalb eines Kreises brechen und dann entfernen möchte? Ich nehme mal an, man muss die Linie zuvor brechen, sonst bringt das Löschen recht wenig...

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

cadffm
Moderator
良い精神




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

Beiträge: 21533
Registriert: 03.06.2002

System: F1
und Google

erstellt am: 29. Jul. 2014 17:33    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 FlorianP 10 Unities + Antwort hilfreich

Zitat:
Original erstellt von cadffm:
...durch alle Blockreferenzen oder Kreise:
Suche alle Linien, deren Start und Endpunkt "kleiner-gleich Radius" vom Zentrum/Basispunkt entfernt ist, löschen.

Mit dem Raubzug fragte ich nur uncharmant wie fit du denn eigentlich bist, denn das ging nirgends draus hervor.
Oben zitiere ich mich mal selbst zum Thema wie ein mögliches Vorgehen aussehen kann.

Etrim stutzt nur, also bleiben "Reste übrig. Soweit ist das Problem erkannt und ich gehe nicht weiter
darauf ein (etrim ist ja wie nun bekannt ist nicht dein Code, also belassen wir den mal so wie er ist.

Die Aussage das etrim ab und an Linien löscht, dafür finde ich spontan keinen Ansatz,
wenn du ein Beispiel posten könntest, dann schau ich mir das auch mal an, vorher bringt es nichts.
(der einzige Punkt der mir einfiel wurde gecheckt: Das Prog zoomt entsprechenden Bereich größmöglich, daher soll es keine Probleme geben.)
Probleme mit Extrim fallen mit spontan auch nicht ein um da was abzuleiten.

------------------
CAD on demand GmbH - Beratung und Programmierung rund um AutoCAD

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

EndlessStorm
Mitglied



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

Beiträge: 10
Registriert: 29.07.2014

erstellt am: 29. Jul. 2014 18: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 FlorianP 10 Unities + Antwort hilfreich

Nun ja, Beispiele für das Verschwinden von Linien, habe auf der Arbeit Screenshots gemacht, Vorher und Nachher. Die Bilder liegen angehangen in dem Post mit dem Code etwas weiter zurück.

Es betrifft aber nur die Linien, welche den Kreis nicht exakt durch die Mitte schneiden, also die, welche keinen Endpunkt im Zentrum des Kreises haben. Mit dem von mir geposteten Code kann jeder das Scenario nachstellen. Natürlich mit angepassten Namen für zu suchenden Layer und Blocknamen sowie mit zu vergebenen Layer und zu ersetzenden Block (muss in Zeichnung vorhanden sein).

Ansonsten sollte an Code nichts fehlen um zu testen (ExpressTools müssen vorhanden sein).


Was mir an Wissen noch fehlt, ist, wie ich Linien konstruieren kann, z.B. indem ich einen Winkel habe (aus einem Block ausgelesen), in dessen Richtung P1 gesetzt werden soll mit Entfernung m. Dann um 180° gedreht um des Blocks Mittelpunkt den P2 mit Entfernung m. Bisher habe ich mich mit anderen Dingen beschäftigt und zum laufen gebracht. Denke aber, dass ich das selbst hin bekomme mit bisl einlesen.
Passend dazu muss ich sowieso Linien mit fester Länge filtern und löschen (Pfeilspitzen mit bekannter, identischer Länge). In dem Zuge, muss ich mir das mit den Längen von Linien und so eh noch einmal näher anschauen.

Mal so nebenbei, wäre es Möglich, mithilfe der von dir benannten Methode sich das extrim zu sparen? Irgendwie schafft es die kopierte Methode MExTrim ja auch, die Linien zu erkennen, welche durch den Kreis gehen... Womöglich kann ich damit irgendwie was anfangen?

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

cadwomen
Ehrenmitglied V.I.P. h.c.
Mädchen für fast alles


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

Beiträge: 2966
Registriert: 26.08.2002

ACAD R11 - 2022
(Plant3D)
AVIS
ACAD LT 2013- 2021
ZWCAD 2015 Versuch "nun ja"
[s]History P3D 2012/(13) SP und Hotfix([/s]<P>
Windows 10 / 64 Bit
Xeon CPU 3.5GHz
16GB Ram
NVIDIA Quadro P2000
3x Dell TV100 88P Monitore

erstellt am: 30. Jul. 2014 11:22    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 FlorianP 10 Unities + Antwort hilfreich

Zitat:
Original erstellt von EndlessStorm:
..Mal so nebenbei, wäre es Möglich, mithilfe der von dir benannten Methode sich das extrim zu sparen? Irgendwie schafft es die kopierte Methode MExTrim ja auch, die Linien zu erkennen, welche durch den Kreis gehen... Womöglich kann ich damit irgendwie was anfangen?[/B]

Hy

wäre auch mein Ansatz gewesen

Kreis d=? suchen und alles was innerhalb liegt entfernen somit würden kürzere ,aber außerhalb liegende Linien
nicht gelöscht

extrim da hab ich nur ne Vermutung, unterschiedliche z Werte , sowas war schonmale wo zu lesen

cu cw

------------------
Also ich finde Unities gut ... und andere sicher auch
------------------------------------------------
cadwomen™
Plant ist wie Öl suchen, je tiefer man bohrt desto mehr kommt ans Tageslicht

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

EndlessStorm
Mitglied



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

Beiträge: 10
Registriert: 29.07.2014

erstellt am: 30. Jul. 2014 21:20    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 FlorianP 10 Unities + Antwort hilfreich

Hmm, ich nehme an, dafür müsste ich mir die Funktion "ptinsideent" näher ansehen (siehe Codeausschnitt von mir). Dort sollte, vom Methodennamen her, das richtige zu finden sein. Wobei ich mit dem vla noch gar nicht vertraut bin...

Kann bitte mal jemand mit Erfahrung in Sachen VLA-Commands die Methode ansehen und mir mitteilen, was ggf geändert werden müsste, damit auf einfachem Wege die gefundenen Linien gelöscht werden können?

Apropos, kann ich eigentlich diese VLA-Commands mit den Standard-Lisp-Commands ohne probleme mischen, also einfach via (entdel ename) die einzelnen Linien (wahrscheinlich via Schleife) löschen, oder muss es dann zwingend mit VLA-Commands gemacht werden?

--zur Zeit habe ich wenig Zeit zum testen und ab nächste Woche bin ich im Urlaub... Danach kann ich mich wieder reindenken  Muss mir wohl doch früher als gedacht die VLA-Commands anschauen...

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

CADdog
Ehrenmitglied V.I.P. h.c.




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

Beiträge: 2237
Registriert: 30.04.2004

Intel Xeon 3,6 GHz
32 GB RAM
NVIDIA Quadro P2000
Windows 10 Enterprise
AutoCADmap 3D 2023
WS-Landcad 2023
QGIS 3.10

erstellt am: 31. Jul. 2014 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 FlorianP 10 Unities + Antwort hilfreich

Zitat:
Original erstellt von EndlessStorm:
Rein Optisch hätte ich mir auch was einfallen lassen können. Blöderweise ist das nur mit optischem anpassen nicht getan... Die Linien müssen unbedingt weg...

Leider kann ich zur Problemlösung nichts beitragen, trotzdem sei die Frage gestattet: warum?
Weil es früher beim Zeichnen so gemacht wurde ?
Weil es der Arbeitgeber/Auftraggeber so will ?
Ich sehe einfach keinen sinnvollen Grund in dieser Arbeitsweise sondern nur Nachteile.
Interessiert mich aber.

------------------

Gruß Thomas
CADdog, the dog formerly known as TR

AutoCAD spricht mit einem, aber viele hören nicht zu.

[Diese Nachricht wurde von CADdog am 31. Jul. 2014 editiert.]

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

EndlessStorm
Mitglied



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

Beiträge: 10
Registriert: 29.07.2014

erstellt am: 31. Jul. 2014 19:50    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 FlorianP 10 Unities + Antwort hilfreich

Es ist der Auftraggeber, dieser legt die zu verwendenen Layer und Blöcke sowie Schriftgrößen, Stile etc alles fest in Form einer zu verwendenen Vorlage und einem Prüfprogramm, welches vor Abgabe auszuführen ist. Veränderungen an Blöcken etc sind nicht erlaubt und würden zu uns zurück gehen. Den Block editieren ist also nicht drin (Thema Solid-Schraffur im Innern) und Schraffuren frei Schnauze würde das Prüfprogramm ebenfalls erkennen und bemängeln.

Somit bleibt nur der Weg, die Linien müssen freigestellt werden. Und es macht bekanntlich wenig Spaß, hunderte Kreise manuel freizustellen^^

Darum suche ich nach einem Weg, dieses automatisiert zu tun, die Methode muss lediglich gesagt bekommen können, welches Objekt freigestellt werden soll. Wie dies Programm dann aussieht, ist zweitrangig, die Idee war nur, Extrim irgendwie dazu bewegen zu können, dies zu übernehmen, weil das Programm schlichtweg ja schon existiert... Scheinbar aber läuft es nur 99%ig (Linien verschwinden teilw. ganz).

Apropos: es befinden sich alle Objekte/Linien/etc auf Z=0 (andere Werte sind verboten und würde das Prüfprogramm bemängeln =) )

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

cadffm
Moderator
良い精神




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

Beiträge: 21533
Registriert: 03.06.2002

System: F1
und Google

erstellt am: 31. Jul. 2014 20:08    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 FlorianP 10 Unities + Antwort hilfreich

1. Wenn du ein ordentliches Beispiel DWG/LSP lauffähig posten würdest, dann würde man sich auch vielleicht damit beschäftigen.
(Extrim.lsp ist nun genannt und braucht nicht dabei sein, das muß der Helfer einfach selber haben oder er kann nicht testen, fertig)
  

2. Wenn man jetzt doch nur aufräumen möchte (etrim wie bisher und im nachgang die Dreckflecken entfernen,
   dann habe ich dir ja schon den Rumpfaufbau genannt wie es geht, du brauchst es nur noch umsetzen.
   Sollte es dabei Probleme geben.. wir haben ein Lispforum auf CAD.de

Und wenn du jetzt wieder nur schreibt "da kann jeder mit den hier..."
Dann antwortet noch einer weniger auf diesen Thread (es ist unnötig kompliziert / Helfer müssen selbst Testumgebung schaffen / macht wenig Spaß).

------------------
CAD on demand GmbH - Beratung und Programmierung rund um AutoCAD

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

EndlessStorm
Mitglied



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

Beiträge: 10
Registriert: 29.07.2014

erstellt am: 31. Jul. 2014 21: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 FlorianP 10 Unities + Antwort hilfreich


TGwork2-CAD-DE.lsp


TEST-CAD-DE.dwg

 
OK, Test-DWG und aufs wesentliche abgespeckte Lisp hängen anbei.

Einfach die Lisp laden und in der DWG ausführen. Dann seht ihr an den drei markierten Stellen, wie es nicht aussehen soll...


[edit]
Scheinbar agiert die Lisp nicht immer identisch. An der Stelle, wo ich in die DWG schrieb "Ergebnis nicht wie gewünscht" hat mein letzter Testlauf alles richtig dargestellt 
Die beiden anderen Stellen bleiben jedoch stets identisch mit Fehlern behaftet!
Notfalls, also den rechten Text ignoieren, wenn das Ergebnis nun doch gut aussieht!

[Diese Nachricht wurde von EndlessStorm am 31. Jul. 2014 editiert.]

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: 01. Aug. 2014 13:05    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 FlorianP 10 Unities + Antwort hilfreich

Ohne jetzt Deinen Code durchzuackern ...
Zitat:
Scheinbar agiert die Lisp nicht immer identisch

Dann würde ich prüfen, obs am Ausschnitt (zoom) liegen kann

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

www.geopaint.at

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

zero007cool
Mitglied



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

Beiträge: 10
Registriert: 08.05.2009

Windows 7 SP1
AutoCAD 2015 inkl. SP

erstellt am: 15. Okt. 2014 11:42    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 FlorianP 10 Unities + Antwort hilfreich

Hallo,

Ich weiß der Thread ist schon älter, aber ich brauch Eure Unterstützung beim Programmieren

Leider funktioniert der oben angeführte Lisp nur richtig wenn mann zuerst einen Befehl auswählt (Schieben, Drehen, etc...) und dann das Lisp aufruft.

Ich möchte aber dass das Lisp ausgeführt wird ohne das ein Befehl vorher ausgeführt werden muss, d.h.
das Lisp soll mir die Blöcke nur markieren ohne jeglichen Schieben oder Drehen Befehl - damit ich diese direkt in den Eigenschaften bearbeiten kann.

Leider bin ich kein Programmierer und blicke den Code nicht ganz durch:

Code:
(vl-load-com)
(defun C:sel_blk ( / pl)
  (princ "\nUmgrenzungLWPolylinie wählen:")
  (setq pl (ssget "_:E:N" '((0 . "LWPOLYLINE"))))
  (if pl
    (ssget "_CP"
          (mapcar 'cdr(vl-remove-if-not '(lambda (K)
                                            (= (car K) 10)
                                            )
                        (entget (ssname pl 0))))
          '((0 . "INSERT"))
          )
    )
  )

Kann mir jemand helfen?
DANKE


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: 15. Okt. 2014 11: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 FlorianP 10 Unities + Antwort hilfreich

(defun C:sel_blk ( / pl)
  (princ "\nUmgrenzungLWPolylinie wählen:")
  (setq pl (ssget  '((0 . "LWPOLYLINE"))))
  (if pl
    (ssget "_CP"
          (mapcar 'cdr(vl-remove-if-not '(lambda (K)
                                            (= (car K) 10)
                                            )
                        (entget (ssname pl 0))))
          '((0 . "INSERT"))
          )
    )
  )

------------------
Also ich finde Unities gut ... und andere sicher auch
---------------------------------------
  - 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

zero007cool
Mitglied



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

Beiträge: 10
Registriert: 08.05.2009

Windows 7 SP1
AutoCAD 2015 inkl. SP

erstellt am: 15. Okt. 2014 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 Nur für FlorianP 10 Unities + Antwort hilfreich

Danke,

aber leider funktioniert der Code nicht wie gewollt. Es werden keine Objekte mehr markiert bzw. ausgewählt.
Erhalte immer nur die Meldung <Selection set: e1>

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

Brischke
Ehrenmitglied V.I.P. h.c.
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: 4171
Registriert: 17.05.2001

AutoCAD 20XX, defun-tools

erstellt am: 15. Okt. 2014 12:20    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 FlorianP 10 Unities + Antwort hilfreich

... dann musst du diese Rückgabe an die Funktion (sssetfirst weiterleiten.

Grüße!
Holger


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


defun-tools Das Download-Portal für AutoCAD-Zusatzprogramme!


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

zero007cool
Mitglied



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

Beiträge: 10
Registriert: 08.05.2009

Windows 7 SP1
AutoCAD 2015 inkl. SP

erstellt am: 15. Okt. 2014 12: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 FlorianP 10 Unities + Antwort hilfreich

Wie schon gesagt ich habe leider keine Ahnung von der Programmierung, kannst du mir bitte den ganzen Code nennen?

Danke im Voraus

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: 15. Okt. 2014 12:32    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 FlorianP 10 Unities + Antwort hilfreich

(defun C:sel_blk ( / pl A)
  (princ "\nUmgrenzungLWPolylinie wählen:")
  (setq pl (ssget  '((0 . "LWPOLYLINE"))))
  (if pl
    (if(setq A(ssget "_CP"
                (mapcar 'cdr(vl-remove-if-not '(lambda (K)
                                                (= (car K) 10)
                                                )
                                (entget (ssname pl 0))))
              '((0 . "INSERT"))
            )
      )
      (sssetfirst A A)
    )
  )


------------------
Also ich finde Unities gut ... und andere sicher auch
---------------------------------------
  - 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

zero007cool
Mitglied



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

Beiträge: 10
Registriert: 08.05.2009

Windows 7 SP1
AutoCAD 2015 inkl. SP

erstellt am: 15. Okt. 2014 12:59    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 FlorianP 10 Unities + Antwort hilfreich

Leider - Fehler:

; Fehler: Falsch formatierte Liste in Eingabe

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: 15. Okt. 2014 13: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 FlorianP 10 Unities + Antwort hilfreich

ja .. hau noch ne Klammer ) hintenran


------------------
Also ich finde Unities gut ... und andere sicher auch
---------------------------------------
  - 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

zero007cool
Mitglied



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

Beiträge: 10
Registriert: 08.05.2009

Windows 7 SP1
AutoCAD 2015 inkl. SP

erstellt am: 15. Okt. 2014 13: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 Nur für FlorianP 10 Unities + Antwort hilfreich

Erhalte nach dem Auswählen der Polylinie nur die Meldung "nil" ?

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

zero007cool
Mitglied



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

Beiträge: 10
Registriert: 08.05.2009

Windows 7 SP1
AutoCAD 2015 inkl. SP

erstellt am: 15. Okt. 2014 14:02    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 FlorianP 10 Unities + Antwort hilfreich

Hurra! Funktioniert hatte vorher nur einen Fehler bei der Polylinie - deswegen hat er nil ausgegeben.

Aber ein kleinen Schönheitsfehler hat es noch.
Es werden nur die Blöcke markiert welche auf dem Bildschirm in der Polylinie sichtbar sind, d.h. habe ich gezoomt werden nur Objekte markiert welche auch nur aus diesem Ausschnitt sehe - kann man dies beheben?

DANKE

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

Brischke
Ehrenmitglied V.I.P. h.c.
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: 4171
Registriert: 17.05.2001

AutoCAD 20XX, defun-tools

erstellt am: 15. Okt. 2014 14: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 Nur für FlorianP 10 Unities + Antwort hilfreich

Zitat:
Original erstellt von zero007cool:
...Es werden nur die Blöcke markiert welche auf dem Bildschirm in der Polylinie sichtbar sind, d.h. habe ich gezoomt werden nur Objekte markiert welche auch nur aus diesem Ausschnitt sehe ...

das ist bei (ssget .. ) so.

Zitat:
Original erstellt von zero007cool:
... - kann man dies beheben?

in dem du den Bildschirmausschnitt so einstellst, dass die ganze Polyline darauf zu sehen ist.

Umhüllendes Rechteck (aus den Koordinaten, die du für den Auswahlsatz berechnest, sehr leicht zu abzuleiten) berechnen und dann einen Zoom-Befehl mit diesen Koordinaten absetzen.

Grüße!
Holger

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


defun-tools Das Download-Portal für AutoCAD-Zusatzprogramme!


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

cadffm
Moderator
良い精神




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

Beiträge: 21533
Registriert: 03.06.2002

System: F1
und Google

erstellt am: 15. Okt. 2014 14: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 FlorianP 10 Unities + Antwort hilfreich

Beispielthreads die das Thema anschneiden:
http://ww3.cad.de/foren/ubb/Forum145/HTML/002472.shtml
http://ww3.cad.de/foren/ubb/Forum145/HTML/002822.shtml
http://ww3.cad.de/foren/ubb/Forum145/HTML/003527.shtml
oder viele weitere Treffer wenn du danach suchst.

(PS: SSGET und die "gewöhnliche" AutoCAD-Objektwahl ist die gleiche Sache, nur gibt es halt ein paar Optionen und Möglichkeiten mehr)

------------------
CAD on demand GmbH - Beratung und Programmierung rund um AutoCAD

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

zero007cool
Mitglied



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

Beiträge: 10
Registriert: 08.05.2009

Windows 7 SP1
AutoCAD 2015 inkl. SP

erstellt am: 15. Okt. 2014 14:42    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 FlorianP 10 Unities + Antwort hilfreich

DANKE! Ihr seit die Besten  

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