Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  Lisp
  einzelne Stützpunkte einer Polylinie gemeinsam schieben

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:  einzelne Stützpunkte einer Polylinie gemeinsam schieben (2287 mal gelesen)
SebZ
Mitglied
Bauingenieur Tiefbau


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

Beiträge: 189
Registriert: 17.10.2004

AutoCAD 2010 Civil 3D DACH
WinXP Professional 2002 SP3
MS Office 2007
Intel Core2Duo 2.80 GHz, 3.00 GB RAM

erstellt am: 09. Jan. 2006 18:29    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 alle miteinand,

folgende Problemstellung, die im Endeffekt wahrscheinlich gar nicht so schwierig ist, aber vielleicht kann mir ja jemand schon mal eine grundsätzliche Richtung zeigen:

ich habe (als Auswahlsatz, nicht als Gruppe) diverse Objekte und eine 2D-Polylinie (da diese aus einer Applikation stammt, darf sie auch nicht in einen anderen PL-Typ gewandelt werden).
Ähnlich dem Befehl STRECKEN möchte ich die Objekte als ganzes sowie die Stützpunkte 3 und 4 der Polylinie (die hat immer nur 4) gemeinsam mit dem Fadenkreuz verschieben, die Elemente sollen dabei auf dem Bildschirm sichtbar mitwandern.

Aktuell interessieren mich folgende Teilfragen:
- kann man dem Befehl STRECKEN die Objekte auch ohne die Fensterfunktionen übergeben (KREUZEN muss entfallen, weil das Tool als Aufräumtool in eng gehäuften Zeichnungselementen arbeiten soll, in denen ich in einem weiteren Schritt die jeweilige Auswahl zu einem einzigen Mausklick später noch hinoptimieren möchte)
- da ich vermute, dass das mit STRECKEN nicht so einfach geht: gibt es eine Methode in LISP, mit der ich einen Satz Vertices einer 2DPL so wie beschrieben verschieben kann? Den Vektor vorher mit 2x GETPOINT zu bestimmen und die Punkte dann einfach blind zu verschieben, ist zwar einfach, aber nicht wirklich geeignet.

Für sachdienliche Hinweise - wie immer - stets dankbar...

------------------
Gruß
SebZ

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

Brischke
Moderator
CAD on demand GmbH




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

Beiträge: 4171
Registriert: 17.05.2001

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

erstellt am: 10. Jan. 2006 08: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 SebZ 10 Unities + Antwort hilfreich

Du willst Objekte um einen bestimmten Vektor verschieben und gleichzeitig 2 Polininienstützpunkte um den gleichen Vektor?
Da geht. Wenn die Verschiebung allerdings visualisiert erfolgen soll, mußt du grread und grdraw verwenden. Dann steht dir aber kein Objektfang zur Verfügung.

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

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

SebZ
Mitglied
Bauingenieur Tiefbau


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

Beiträge: 189
Registriert: 17.10.2004

AutoCAD 2010 Civil 3D DACH
WinXP Professional 2002 SP3
MS Office 2007
Intel Core2Duo 2.80 GHz, 3.00 GB RAM

erstellt am: 10. Jan. 2006 11:56    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

hmm...

danke erstmal für deinen Tip, der mir jetzt bei den ersten Schritten weiterhilft (obwohl grread bisher noch nicht ganz so recht tut, was ich will: um die Mauskoordinaten vor dem abschließenden Klick an der Zielposition kontinuierlich abzufragen, fehlt mir noch der Weg, vermutlich über eine Schleife oder so.) Hast du oder jemand anders eventuell einen code-Schnipsel als Beispiel ?

Ich hab einfach mal eine kleine Skizze angehängt, die zeigt, wie ich mir die Verschiebung der Objekte vorstelle (in Wirklichkeit sind allerdings mehrere bis viele solcher Gruppen dicht bei- und übereinander - das dann sinnvoll voneinander zu trennen ist eine andere Aufgabe...). Gelb ist die Ausgangslage, rot ist das Ziel. Objektfang und Darstellung des Verschiebevektors sind nicht unbedingt erforderlich.

------------------
Gruß
SebZ

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

andi2050
Mitglied



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

Beiträge: 107
Registriert: 11.03.2003

erstellt am: 10. Jan. 2006 21:37    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 SebZ 10 Unities + Antwort hilfreich

Hallo

Du könnest doch alle Objekte im Auswahlsatz (inclusive PLINE) mit dem normalen SCHIEBEN Befehl bewegen (Objekte 'hängen' dabei am Fadenkreuz). Danach den 1. und 2. Vertex der PLINE mit dem Verschiebevektor zurückschieben durch Manipulation der Vertices (GC10 verrechnen). Den Vektor kannst Du leicht ermitteln, durch einen Vergleich des 1.Vertex vor und nach dem Verschieben. Einziger Nachteil ist, daß die Verformung der PLINE wärend des SCHIEBEN-Befehls nicht angezeigt wird.

Nur mal so ne' Idee...

Grüße
Andi

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

marc.scherer
Ehrenmitglied V.I.P. h.c.
CAD-Administrator



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

Beiträge: 2490
Registriert: 02.11.2001

Windows 10 64bit
AutoCAD Architecture 2018/2019 (deu/eng)
AEC-Collection 2019 (Revit und Zeugs)
Wenn sich's nicht vermeiden läßt:
D-A-CH Erweiterung (mies implementierter Schrott)

erstellt am: 11. Jan. 2006 09:27    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für SebZ 10 Unities + Antwort hilfreich

Hi,
eine Beispielanwendung für grread:

Code:

;|
Funktion ermittelt einen Punkt bezogen
auf die aktuelle Lage des Fadenkreuzes
und zeichnet die Vektoren relativ zum bewegten Fadenkreuz,
die an die Funktion übergeben werden...

Argumente:

COLOR = Welche ACI-Farbe sollen die Vektoren haben? (1 - 255)

CURTYPE = grread-codes für [curtype]
                  Steuert die Ausprägung des Fadenkreuzes.
                  An integer indicating the type of cursor to be displayed.
                  The curtype argument affects only the cursor type during the current grread function call.
                  You can specify one of the following values for curtype:
                  0 Display the normal crosshairs.
                  1 Do not display a cursor (no crosshairs).
                  2 Display the object-selection "target" cursor.

RW = Rechtswert für die zu generierende Box

HW = Hochwert für die zu generierende Box

Rückgabewert:
nil bei Rechtsklick oder Abbruch
Koordinate des Fadenkreuzes bei Linksklick
|;
(defun MS_POINTBYCROSSHAIR (COLOR CURTYPE RW HW / P)
  (setq P (grread 't 5 CURTYPE)) ;_ lese aktuelle Lage des Crosshairs
  (XORDRAW (cadr P) COLOR RW HW) ;_ zeichne Geometrie um Crosshair
  (while (= 5 (car (setq P (grread 't 5 CURTYPE)))) ;_ lese solange nicht linksgeklickt wird
    (redraw) ;_ grvecs löschen
    (XORDRAW (cadr P) COLOR RW HW) ;_ Geometrie an neuer Lage zeichnen
  )
  (redraw)
  (if (= 3 (car P))
    (cadr P)
  )
)

(defun XORDRAW
       (PKT CLR BL-RW BL-HW / HOCH OBL OBR RECHTS UL UR VEK_LIST)
  (setq RECHTS (car PKT)
HOCH (cadr PKT)
UL (list (- RECHTS (/ BL-RW 2)) (- HOCH (/ BL-HW 2)))
UR (list (+ RECHTS (/ BL-RW 2)) (- HOCH (/ BL-HW 2)))
OBR (list (+ RECHTS (/ BL-RW 2)) (+ HOCH (/ BL-HW 2)))
OBL (list (- RECHTS (/ BL-RW 2)) (+ HOCH (/ BL-HW 2)))
VEK_LIST (list CLR UL UR UR OBR OBR OBL OBL UL UL OBR OBL UR)
  )
  (grvecs VEK_LIST)
)



Beispielaufruf:

Code:
(MS_POINTBYCROSSHAIR 10 1 50 50)

...

------------------
Ciao,
Marc

[Diese Nachricht wurde von marc.scherer am 11. Jan. 2006 editiert.]

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

SebZ
Mitglied
Bauingenieur Tiefbau


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

Beiträge: 189
Registriert: 17.10.2004

AutoCAD 2010 Civil 3D DACH
WinXP Professional 2002 SP3
MS Office 2007
Intel Core2Duo 2.80 GHz, 3.00 GB RAM

erstellt am: 11. Jan. 2006 10: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

@Andi:
Stimmt, das wäre natürlich eine recht direkte Lösung, auch nicht sehr kompliziert und als Plan B auf jeden Fall sehr sympathisch !
Aus verschiedenen Gründen wäre mir die "Komplettlösung" aber doch lieber (u.a. als Prototyp für ähnliche Anforderungen, aber auch, weil die "gestreckte" Darstellung der PLim Objektkuddelmuddel wahrscheinlich etwas komfortabler ist).

@Marc:
Danke für den Code, das hat mir doch einiges an Probieren erspart (eine Schleifenstruktur hatte ich ja schon vermutet, aber für die richtigen Bedingungen hätte ich sicherlich gebraucht...)

------------------
Gruß
SebZ

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

SebZ
Mitglied
Bauingenieur Tiefbau


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

Beiträge: 189
Registriert: 17.10.2004

AutoCAD 2010 Civil 3D DACH
WinXP Professional 2002 SP3
MS Office 2007
Intel Core2Duo 2.80 GHz, 3.00 GB RAM

erstellt am: 19. Jan. 2006 17: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

so, es geht wieder etwas weiter mit dem lispeln, aber ich sehe, dass ich doch noch wesentlich mehr an Unterstützung benötige:

grread, grdraw und grvecs sind mir jetzt ein begriff. Was mir aber überhaupt nicht klar ist, wie ich einen Auswahlsatz an Elementen plus zwei gleichbleibende plus zwei verschobene Vertices bei grread an der Cursorposition darstellen kann. Das ist ja doch die Methode, die Holger im Hinterkopf hatte, oder? (Der fest verdrahtete Befehl "Strecken" machts doch so einfach vor).

Zuerst hatte ich ja gedacht, dass mit Cursortype=2 der aktuelle Auswahlsatz an der Cursorposition einfach mit dargestellt wird, aber mit Object-Selection "Target" Cursor (AC-Hilfe) ist nichts weiter als die voreingestellte Pickbox gemeint, der man wie in Marcs Beispiel noch was Selbsgezeichnetes hinzufügen kann. Es ist natürlich denkbar, die gewählten Elemente mit grvecs nachzuzeichnen (was in Marcs Beispiel eine Funktion wie XORDRAW übernehmen würde), aber spätestens bei Textelementen oder auch Blockreferenzen dürfte das schon riesig aufwendig werden: ich denke da gibt es einen einfacheren Weg, nur: welchen ??

Weiterhin ist mir auch noch nicht ganz klar, wie ich an die Elementbeschreibungen der Vertices rannkomme: (entget (car (entsel "Polylinie wählen: "))) gibt nicht die abhängigen Vertices zurück, und wie erkenne ich dann auch noch die richtige Reihenfolge, um die richtigen Vertices zu fassen? Wie bereits beschrieben, handelt es sich um 2D-Polylinien der "alten" Bauart, die mit GC66 = 1 arbeitet. Daran kann ich nichts ändern.

Code:

Beispiel:
Befehl: (entget (car (entsel "Objekt wählen: ")))
Objekt wählen: ((-1 . <Objektname: 402b2a70> ) (0 . "POLYLINE") (330 .
<Objektname: 400b5cf8> ) (5 . "C3D7E") (100 . "AcDbEntity") (67 . 0) (410 .
"Model") (8 . "BA_ABWLEIZUSTAND_R") (100 . "AcDb2dPolyline") (66 . 1) (10 0.0
0.0 0.0) (70 . 0) (40 . 0.0) (41 . 0.0) (210 0.0 0.0 1.0) (71 . 0) (72 . 0) (73
. 0) (74 . 0) (75 . 0))


Irgendwo muss doch auch was mit (100 . "AcDb2dVertex") ... auftauchen.

Übrigens: bisher habe ich grundsätzlich mit AutoLISP ohne VL operiert. Könnte mir vorstellen, dass es auch hier mit beiden Varianten eine Lösung gibt - AL viel Code, umständlich aber nachvollziehbar / VL wenig Code aber eher die BlackBox-Methode. Ich würde auch weiterhin einer reinen AL-Lösung den Vorzug geben, bin aber natürlich für alles offen.

------------------
Gruß
SebZ

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

andi2050
Mitglied



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

Beiträge: 107
Registriert: 11.03.2003

erstellt am: 19. Jan. 2006 20: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 SebZ 10 Unities + Antwort hilfreich

Hi SebZ

Vielleicht hilft Dir folgender Code etwas weiter:

Code:

(defun c:test (/ basept ent grpt objlist ss)
  (setq ss (ssget)
objlist (mapcar '(lambda (ent) (vla-copy (vlax-ename->vla-object ent))) (ss->list ss))
basept (getpoint "\nBasispunkt: ")
  )
  (while (= 5 (car (setq grpt (grread t))))
    (setq grpt (cadr grpt))
    (foreach obj objlist (vla-move obj (vlax-3d-point basept) (vlax-3d-point grpt)))
    (setq basept grpt)
  ) ;while
)
(defun ss->list (ss / i l)
  (setq i -1)
  (if ss
    (repeat (sslength ss) (setq l (cons (ssname ss (setq i (1+ i))) l)))
  )
  (reverse l)
)

Hab gerade nicht viel Zeit, daher laß ich das ganze unkommentiert...

Übrigens lassen sich Plines mit VL leichter handeln, da es keinen Unterschied  zwischen alten und neuen Plines macht.

Grüße

Andi

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

andi2050
Mitglied



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

Beiträge: 107
Registriert: 11.03.2003

erstellt am: 20. Jan. 2006 00:37    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 SebZ 10 Unities + Antwort hilfreich

Hallo nochmal...

Hier ein Stück Code zum Verschieben einzelner Vertices.

Code:

(defun c:test2 (/ basept ename grpt obj p3 p4 vek)
  (vl-load-com)
  (setq ename  (car (entsel "\nPolylinie wählen: "))
basept (getpoint "\nBasispunkt: ")
obj    (vlax-ename->vla-object ename)
;; Koordinaten von 3. und 4. Vertex holen
p3    (vlax-safearray->list (vlax-variant-value (vlax-get-property obj 'coordinate 2))
      )
p4    (vlax-safearray->list (vlax-variant-value (vlax-get-property obj 'coordinate 3))
      )
  )
  (while (= 5 (car (setq grpt (grread t))))
    (setq grpt (cadr grpt)
  ;; Verschiebungs Vektor berechnen
  vek  (mapcar '- grpt basept)
    )
    ;; Vertexkoordinaten mit Vektor verrechen und ändern
    (vlax-put-property obj 'coordinate 2 (vlax*point->variant (mapcar '+ p3 vek)))
    (vlax-put-property obj 'coordinate 3 (vlax*point->variant (mapcar '+ p4 vek)))
  )
)

(defun vlax*point->variant (pt / )
  (vlax-make-variant
    (vlax-safearray-fill (vlax-make-safearray vlax-vbdouble (cons 0 (- (length pt) 1)))
pt
    )
  )
)


Grüße

Andi

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

SebZ
Mitglied
Bauingenieur Tiefbau


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

Beiträge: 189
Registriert: 17.10.2004

AutoCAD 2010 Civil 3D DACH
WinXP Professional 2002 SP3
MS Office 2007
Intel Core2Duo 2.80 GHz, 3.00 GB RAM

erstellt am: 20. Jan. 2006 14:49    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 Andi,

da hast du mich ein riesiges Stück weitergebracht (Vielen Dank und U's)!
Wenn ich die beiden Codeabschnitte kombiniere, habe ich im wesentlichen das, was ich brauche - die verschiedenen Elementtypen müssen halt noch getrennt werden.
VL ist in dieser Aufgabenstellung natürlich viel schneller am Ziel, da gebe ich dir recht, auch wenn ich bisher noch nicht damit gearbeitet habe.
Ich habe unterdessen festgestellt, dass vla-move und vla-copy (und alle anderen ggf. vorhandenen vla-Funktionen) nicht in der AutoCAD Hilfe dokumentiert sind. Ohne Hilfe von außen hätte ich die also ohnehin nie gefunden. Weißt du oder jemand anderes, wo ich Infos darüber erhalten kann? Irgendwann würde ich gerne mal wieder aus eigener Kraft weiterkommen... 

------------------
Gruß
SebZ

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

marc.scherer
Ehrenmitglied V.I.P. h.c.
CAD-Administrator



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

Beiträge: 2490
Registriert: 02.11.2001

Windows 10 64bit
AutoCAD Architecture 2018/2019 (deu/eng)
AEC-Collection 2019 (Revit und Zeugs)
Wenn sich's nicht vermeiden läßt:
D-A-CH Erweiterung (mies implementierter Schrott)

erstellt am: 20. Jan. 2006 15: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 SebZ 10 Unities + Antwort hilfreich

Zitat:
Original erstellt von SebZ:
...dass vla-move und vla-copy (und alle anderen ggf. vorhandenen vla-Funktionen) nicht in der AutoCAD Hilfe dokumentiert sind...

Aber klaro sind sie das. Nur nicht direkt als COM-Wrapper Funktion.
Guckst Du:
AutoCAD Entwicklerdokumentation > ActiveX and VBA Reference > Methods > Move Method oder auch Copy Method

Die "ungewrappte" Form dieser Methoden geht über:
(vlax-invoke-method obj method arg [arg...])

Also bei COPY:

Code:
(vlax-invoke-method (vlax-ename->vla-object (car (entsel))) 'COPY)

Oder bei MOVE:

Code:
(vlax-invoke-method
  (vlax-ename->vla-object (car (entsel)))
  'MOVE
  (vlax-3d-point (getpoint "\nVonPunkt:"))
  (vlax-3d-point (getpoint "\nNachPunkt:"))
)

...

------------------
Ciao,
Marc

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

SebZ
Mitglied
Bauingenieur Tiefbau


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

Beiträge: 189
Registriert: 17.10.2004

AutoCAD 2010 Civil 3D DACH
WinXP Professional 2002 SP3
MS Office 2007
Intel Core2Duo 2.80 GHz, 3.00 GB RAM

erstellt am: 20. Jan. 2006 15: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

aha -
aber, Marc, erlaube mir die Frage:

Woher weißt du das, wenn über Suche nach "vla-copy" in der Hilfe nix kommt?

------------------
Gruß
SebZ

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

andi2050
Mitglied



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

Beiträge: 107
Registriert: 11.03.2003

erstellt am: 20. Jan. 2006 17:40    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 SebZ 10 Unities + Antwort hilfreich

Hi !

Beim Kombibnieren der beiden Funktionen musst Du aufpassen:
-Die Funktion mit vla-move verschiebt immer inkremental von einem grread-Punkt zum nächsten.
- Die Funktion mit der Pline bewegt die Punkte immer absolut von den Ursprünglichen Koordinaten aus.

Übrigens:
Wenn Du mit VLA(X) Objekte erzeugst oder veränderst, solltest Du keine entmake-Funktionen im gleichen Programm verwenden ! Ansonsten kommt es öfters zu Abstürzen. Gefährlich ist z.B Polylinie mit entmake erstellen, gleich danach mit vla-put-color die Farbe verändern.

Die Funktionen vla-copy,move... sind eigentlich Abkürzugen der von Marc beschriebenen vlax-invoke-metod... Vorgehensweise. Ob die jeweilige 'Abkürzung' vorhanden ist überprüfe ich eigentlich immer im VLIDE. Der gewünschten Methode einfach ein 'vla- ' voranstellen (z.B. getbulge -> vla-getbulge) und in den VLIDE-Editor eintippen. Wenn der Text blau wird, dann gibts die Funktion. Andernfalls muß man den Weg über invoke-method gehen.
Oder: Im VLIDE-Editor einfach 'vla' eintippen, dann Strg+Shift+Space drücken -> Plop ein Fenster mit allen vla-Funktionen
Nur das Umwandeln der Datentypen (safearry, Variant....) kann manchmal etwas fischig werden.

Grüße

Andi

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

SebZ
Mitglied
Bauingenieur Tiefbau


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

Beiträge: 189
Registriert: 17.10.2004

AutoCAD 2010 Civil 3D DACH
WinXP Professional 2002 SP3
MS Office 2007
Intel Core2Duo 2.80 GHz, 3.00 GB RAM

erstellt am: 20. Jan. 2006 18:07    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

Bestens, und sehr nützliche Tips: da habe ich heute einen tiefen Einblick in VL & Co. bekommen.

Jetzt wird rumprobiert und angepasst. Das mit dem inkrementellen Verschieben habe ich gerade selbst gemerkt, weil ich
a) Verschieben nur im (lokalen) BKS zulassen will: (vlax-3d-point muss erst transformiert werden)
b) nur die X-Koordinate variabel zulasse (orthomode funktioniert hier nicht)
c) den basept automatisch mit "(cdr (assoc 10 (entget (ssname ss 0))))" belegen will (hier hänge ich gerade etwas fest)

Wird sicherlich noch einige Zeit dauern. Dank für die Hilfe und ein schönes WE euch allen.

------------------
Gruß
SebZ

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

marc.scherer
Ehrenmitglied V.I.P. h.c.
CAD-Administrator



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

Beiträge: 2490
Registriert: 02.11.2001

Windows 10 64bit
AutoCAD Architecture 2018/2019 (deu/eng)
AEC-Collection 2019 (Revit und Zeugs)
Wenn sich's nicht vermeiden läßt:
D-A-CH Erweiterung (mies implementierter Schrott)

erstellt am: 23. Jan. 2006 09: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 SebZ 10 Unities + Antwort hilfreich

Zitat:
Original erstellt von SebZ:
Woher weißt du das, wenn über Suche nach "vla-copy" in der Hilfe nix kommt?

Ganz einfach:
Weil ich wissen wollte, warum der VLisp-Editor diese ganzen "vla-" Dinger kannte, die aber in der Hilfe nicht zu finden waren.
Da hab' ich dann halt' zum Thema "COM" (Component Object Model)
-> http://de.wikipedia.org/wiki/Component_Object_Model
etwas recherchiert um die Zusammenhänge zu verstehen.


------------------
Ciao,
Marc

[Diese Nachricht wurde von marc.scherer am 23. Jan. 2006 editiert.]

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

SebZ
Mitglied
Bauingenieur Tiefbau


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

Beiträge: 189
Registriert: 17.10.2004

AutoCAD 2010 Civil 3D DACH
WinXP Professional 2002 SP3
MS Office 2007
Intel Core2Duo 2.80 GHz, 3.00 GB RAM

erstellt am: 24. Feb. 2006 12:49    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


MoveTBP.lsp.txt

 
Hallo Leute,

jetzt hab ich mal wieder drangesessen, die Einzelteile zusammenzuschrauben.
Den Code für den Programmteil, der sowohl ganze Zeichnungselemente als auch einzelne Vertices verschiebt, hänge ich dran - für wen's interessiert...
Sicherlich gehts noch eleganter, aber mir reichts so völlig aus.

Zwischenzeitlich war noch das Problem der geeigneten Elementauswahl zu lösen, weil das in meinem Fall über xdata geht, aber das ist ein anderes Thema und eher stark fallbezogen. (Habe gerade diesen Thread gefunden, der in diese Richtung geht)
Die Zeichnungselemente werden also hier einfach als gegeben angenommen.

Allen Tipgebern noch mal vielen Dank !

------------------
Gruß
SebZ

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