| |
 | Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte |
| |
 | PNY präsentiert die neue NVIDIA RTX A400 und die A1000 Grafikkarte, eine Pressemitteilung
|
Autor
|
Thema: winkel durch dynamischen schnittpunkt (540 mal gelesen)
|
shodan Mitglied
 Beiträge: 0 Registriert: 03.04.2006
|
erstellt am: 03. Apr. 2006 19:04 <-- editieren / zitieren --> Unities abgeben:         
hallo hab heute euer forum durchforstet und bin nach anfänglichem guten vorankommens zu folgendem problem vorgedrungen. ich hätte ganz gerne die orientierung eines liniensegments gemessen, wobei sich das unabhängig vom linientyp realisieren lassen sollte. sollte in etwa so funktioniern, dass der benutzer einen punkt der linie wählt (kann auch ein endpunkt sein) und ich die richtung im punkt als winkel bekomme. geht das? wenn ja wie? bin für alle tipps und tricks dankbar. grüsse shodan Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Stelli1 Moderator Verm.-Ing.
    
 Beiträge: 1526 Registriert: 17.08.2005 Map 2000-2014, Rasterdesign, MapGuide, Autodesk Topobase, VS6, VS.net 2013
|
erstellt am: 03. Apr. 2006 19:56 <-- editieren / zitieren --> Unities abgeben:          Nur für shodan
Hallo und herzlich willkommen im VBA Forum. Mir ist zwar relativ klar was du machen willst, aber wie .... Das Problem wird sein eine Auswahl vom User anzufordern. Einmal hast du die Möglichkeit ein Entity wählen zu lassen. Zu dem Entity bekommst du den angeklickten Punkt. Der müsste auf eventuell vorhandene Liniensegmente umgeformt werden um das Liniensegment zu ermitteln was du benötigst.
Code:
Dim Auswahl As AcadEntity Dim Punkt As Variant ThisDrawing.Utility.GetEntity Auswahl, Punkt, Chr$(10) & "Element wählen: "
Oder du fragst einen Punkt ab und ermittelst dort ob an dieser Stelle Elemente sind und verfährst wie oben
Code:
Dim selset As AcadSelectionSet Set selset = ThisDrawing.SelectionSets.Add("MySel") selset.Clear selset.SelectAtPoint Punkt Debug.Print selset.Count
Aber um die Rechnerei wird man wohl nicht ganz drum herum kommen.Stelli
------------------ Warum lisp'eln wenn's auch anders geht. www.ib-stelberg.de Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
shodan Mitglied
 Beiträge: 0 Registriert: 03.04.2006
|
erstellt am: 03. Apr. 2006 21:04 <-- editieren / zitieren --> Unities abgeben:         
danke für die rasche antwort. das problem an der sache liegt leider daran, dass durchaus 2 linen am angegebenen punkt liegen können. ich hab mich daher für eine "linienunabhängige" variante entschieden und lasse mit objektfang nächster einen punkt auf der linie wählen (da es nur text ist, ist die 100%ige ausrichtung nicht sooo tragisch). das funktioniert jetzt schon sehr schön. zwei fragen hat der blutige anfänger noch: - gibt es eine möglichkeit ähnlich lisp die geschriebene funktion auch direkt über einen command anzusprechen (und nicht mittels -vbarun macro). - gibt es standardobjekte für [Auswahl] und <Vorwahl> im command oder muss ich mir das selber zusammenbasteln? wenn ja - wie definiere ich variablen, die während der programmlaufzeit erhalten bleiben, oder einfach eine globale setzen? danke im voraus. shodan Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Stelli1 Moderator Verm.-Ing.
    
 Beiträge: 1526 Registriert: 17.08.2005 Map 2000-2014, Rasterdesign, MapGuide, Autodesk Topobase, VS6, VS.net 2013
|
erstellt am: 03. Apr. 2006 21:38 <-- editieren / zitieren --> Unities abgeben:          Nur für shodan
Hallo, du kannst in deine Startlisp folgende Lisp einbinden
Code:
(defun c:MeinBefehl (/) (vla-runmacro(vlax-get-acad-object) "MeinMacro"))
Damit kannst du dann das Makro "MeinMacro" auf der Befehlszeile mit "MeinBefehl" aufrufen. Den Befehl kannt du auch alternativ per VBA und Sendcommand ausführen.Variablen lokale und globale kannst du in VBA nach belieben einrichten. Wird eine Variable innerhalb eine Prozedur (Sub/Function) mit Dim Variable deklariert gilt sie nur in der Prozedur. Wird sie in einen Klassenmodul mit Dim Variable deklariert gilt sie innerhalb des Moduls. Wird die Variable mit Public Variable deklariert, gilt sie im ganzen Projekt. Die Variable bleibt erhalten bis AutoCAD geschlossen wird. Stelli ------------------ Warum lisp'eln wenn's auch anders geht. www.ib-stelberg.de Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |