Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de
  AutoCAD VBA
  Liegt der Punkt auf der Linie

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
  
PNY wird von NVIDIA zum Händler des Jahres gewählt - zum dritten Mal in Folge, eine Pressemitteilung
Autor Thema:  Liegt der Punkt auf der Linie (1574 mal gelesen)
Karl01
Mitglied



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

Beiträge: 55
Registriert: 15.06.2004

Win 7; Map2012

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

Hallo

Ich wähle mit .getEntity eine Polylinie aus und und mit .getPoint einen neuen Einfügepunkt für einen Block aus. Ich habe den Objektfang auf nächsten eingestellt um den Block auf der Polyline zu platzieren.
Nun liegen aber manchmal mehrere Polyline sehr eng nebeneinander. Wie kann ich überprüfen das der Einfügepunkt auf der ausgewählten Polyline liegt?

Danke

Karl

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

ACAD 2008 Mechanical

erstellt am: 12. Nov. 2004 08: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 Nur für Karl01 10 Unities + Antwort hilfreich

mit Lisp gehts so
(defun ISPOINT_ONLINE ( LINE PKT) 
  (equal(vlax-curve-getClosestPointTo (vlax-ename->vla-object LINE) Pkt)PKT)
)

Aufruf
(ISPOINT_ONLINE (car(entsel "\nLinie wählen : "))(getpoint "\n Punkt wählen : "))

liefert dir 'T wenn der Punkt auf dem Kurvenobject liegt.
In VBA, gibt es -glaube ich- kein Äquivalent zu den vlax-curve- Funktionen. Vielleicht kannst du das Lisp aus VBA aufrufen?!


------------------
  - Thomas -
"Bei 99% aller Probleme ist die umfassende Beschreibung des Problems bereits mehr als die Hälfte der Lösung desselben."

[Diese Nachricht wurde von CADmium am 12. Nov. 2004 editiert.]

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

mapcar
Mitglied
CADmin



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

Beiträge: 1250
Registriert: 20.05.2002

Die Phönizier haben das Geld erfunden - aber warum so wenig?
(Johann Nepomuk Nestroy)

erstellt am: 12. Nov. 2004 08: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 Karl01 10 Unities + Antwort hilfreich

> Vielleicht kannst du das Lisp aus VBA aufrufen?

Wie denn?

Gruß, Axel Strube-Zettler

------------------
(defun - Lisp over night - AutoLisp-Programmierung für AutoCad - Da weiß man, wann man's hat
Meine AutoLisp-Seiten Mein Angriff auf dein Zwerchfell Mein Lexikon der Fotografie Mein gereimtes Gesülze

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

ACAD 2008 Mechanical

erstellt am: 12. Nov. 2004 08: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 Karl01 10 Unities + Antwort hilfreich

sendcommand vielleicht? .. Axel, für solche Antworten bist du doch zuständig, ich hab doch keine Ahnung von VBA ..

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

Karl01
Mitglied



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

Beiträge: 55
Registriert: 15.06.2004

Win 7; Map2012

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

Hallo

Vielen Dank für die Beiträge.
Ich habe von Lisp keine Ahnung, vielleicht kann mir da noch einer weiterhelfen


Karl

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

harryk
Mitglied
Projektleiter


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

Beiträge: 124
Registriert: 19.08.2003

erstellt am: 12. Nov. 2004 10:34    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 Karl01 10 Unities + Antwort hilfreich

hi,
nur nen ansatz, nicht schlau aber koennte funzen:

wenn's nur um linien geht muessen die winkel vom:
- linienstartpunkt zum einfuegepunkt
- einfuegepunkt zum linienendpunkt
gleich dem linienwinkel sein. bei polylinien wirst du durch die segmente laufen muessen.

darueber hinaus hatte ich irgendwo mal ne vba klasse die lisp ausfuehrt, hab ich mal benuzt um festzustellen ob xref's overlayed oder attached sind, da wollte mir vba auch nicht weiterhelfen. ich schau mal ob ich das in alten backup's noch find und meld mich wieder.

gruss, harry

[Diese Nachricht wurde von harryk am 12. Nov. 2004 editiert.]

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

fuchsi
Mitglied
Programmierer c#.net Datawarehouse


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

Beiträge: 1201
Registriert: 14.10.2003

AutoCad Version 2012 deu/enu
<P>Windows 7 64bit

erstellt am: 12. Nov. 2004 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 Nur für Karl01 10 Unities + Antwort hilfreich

ab der 2005 gibts ne typelibrary für lisp

hab das im inet gefunden , kanns leider nicht testen (momentan keine 2005er)


If Me.Application.Version = "16.0" Then
Set VLisp = ThisDrawing.Application.GetInterfaceObject("VL.Application.16")
Else
Set VLisp = ThisDrawing.Application.GetInterfaceObject("VL.Application.1")
End If

Set VLispFunc = VLisp.ActiveDocument.Functions


Set obj1 = VLispFunc.Item("read").funcall("(vl-princ-to-string (assoc pDXF (entget (handent pHandle))))")
varRetVal = VLispFunc.Item("eval").funcall(obj1)

------------------
WWW.FFZELL.AT.TC

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

mapcar
Mitglied
CADmin



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

Beiträge: 1250
Registriert: 20.05.2002

Die Phönizier haben das Geld erfunden - aber warum so wenig?
(Johann Nepomuk Nestroy)

erstellt am: 12. Nov. 2004 19: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 Karl01 10 Unities + Antwort hilfreich

@cadmium

> sendcommand vielleicht?

Tja, man kann ja viel senden, aber wie erfährt dann das VBA-Programm, wofür sich Lisp entschieden hat - drauf oder nicht drauf?

Das ist ja alles nicht so einfach... Das Ergebnis in eine Uservariable und in VBA auslesen? Oder eher das, wohin Fuchsis Beitrag zielt? Zu Fuchsi Ansinnen gibt's hier mehr: http://ww3.cad.de/foren/ubb/Forum259/HTML/000399.shtml

Hier würde ich allerdings eine simplere Lösung vorschlagen: Ein Punkt P liegt auf der Linie P1-P2, wenn Abstand(P, P1) + Abstand(P, P2) == Abstand(P1, P2).

Na ja, da VBA auch keine Funktion kennt, die (distance ...) entspricht, muss man die natürlich auch noch selber schreiben. Sollte aber eigentlich kein Problem sein. Auf jeden Fall erspart man sich damit die Cross-Aufrufe.

Blöd wird's nur, wenn die Polylinie auch noch Bogensegmente hat, auf denen der Punkt liegen könnte:-(

Gruß, Axel Strube-Zettler


------------------
(defun - Lisp over night - AutoLisp-Programmierung für AutoCad - Da weiß man, wann man's hat
Meine AutoLisp-Seiten Mein Angriff auf dein Zwerchfell Mein Lexikon der Fotografie Mein gereimtes Gesülze

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

harryk
Mitglied
Projektleiter


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

Beiträge: 124
Registriert: 19.08.2003

erstellt am: 13. Nov. 2004 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 Karl01 10 Unities + Antwort hilfreich

hi,
ja klar, war vlax.cls. ist aber dieselbe version die mapcar hier schon angeheftet hat:http://ww3.cad.de/foren/ubb/Forum259/HTML/000399.shtml

grüsse, harry

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



Anzeige:Infos zum Werbeplatz >>

pitCAD Ultimate Heizung - Kälte - Sanitär - Laborbau - Einzelplatz CAD APP für TGA, Elektro, Facility Management

Vereint die langjährige Erfahrung von pit-cup im Bereich der Gebäudetechnikplanung und des Facility Management zu einem durchgängigen 2D/3D CAD/BIM Planungswerkzeug, über den gesamten Lebenszyklus einer Immobilie.

Karl01
Mitglied



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

Beiträge: 55
Registriert: 15.06.2004

Win 7; Map2012

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

Hallo
ich das Problem wie folgt gelöst
Ich berechne den Abstand zwischen dem Anfangspunkt der Polyline und dem .getPoint, und konstruiere einen Kreis (Mittelpunkt = Anfangspunkt Polylinie und Radius = Abstand. Der Schnittpunkt von der Polylinie und dem Kreis (.IntersectWith) ist der Einfügepunkt für den Block der somit genau auf der Polylinie liegt.

Karl

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