|
AutoCAD VBA : Block Zuschneiden
alfred neswadba am 06.07.2009 um 21:08 Uhr (0)
Hi,sorry, ich sehe keine Möglichkeit, dies in VBA zu tun ohne über Lisp oder dotNET oder ARX auszuweichen.Mit Lisp hast Du hier einen CodeWenn es einfacher sein soll, dann kannst Du auch über das VL-Application-Object mit (command "_xclip" ... aus VBA heraus arbeiten.Aber eine Lösung hier zu präsentieren, die das gesamte Event-Handling für nachfolgendes Ändern der Grenzpolylinie inkludiert, benötigt einige Zeit (zumindest deutlich mehr als ich hier geben kann). Hoffe es hilft Dir trotzdem weiter, - alfred ...
|
In das Form AutoCAD VBA wechseln |
|
AutoCAD VBA : Block Zuschneiden
alfred neswadba am 07.07.2009 um 09:28 Uhr (0)
Hi,mit z.B. (handent "3D2") kannst Du das Objekt mit dem Handle &h3D2 an Lisp übergeben, Du kannst genauso nur den Handle als Text übergeben und dann im Lisp mit handent auswerten.Wenn es Dir darum geht, wie man in Lisp eine Funktion definiert, die Parameter übernimmt == das kriegst Du auch schon aus der Hilfe direkt raus, da steht z.B. (defun sym ([arguments] [/ variables...]) expr...) HTH, - alfred -------------------www.hollaus.at
|
In das Form AutoCAD VBA wechseln |
|
AutoCAD VBA : Block Zuschneiden
alfred neswadba am 27.07.2009 um 21:42 Uhr (0)
Hi,vorerst mal sorry, der Thread ist mir entglitten. Zitat:Bekomme das Lisp programm von oben nicht zum laufen?...kannst Du mir den Code zeigen, damit ich mir vorstellen kann, worans scheitern könnte.Arbeitest Du jetzt mit Lisp oder VBA (aus dem heraus Du etwas Lisp-artiges starten willst)?- alfred -------------------www.hollaus.at
|
In das Form AutoCAD VBA wechseln |
|
AutoCAD VBA : Blöcke auf Layern auswählen
alfred neswadba am 29.07.2009 um 11:43 Uhr (0)
Hi,wie hast Du denn obj deklariert?Wenn Du nicht weisst, wie AutoCAD die Elemente intern nennt bzw, die Namen, die Du bei Geometrietyp im Filter eintragen musst, dann kannst Du in der Befehlszeile eingeben:(entget (car (entsel))...damit bekommst Du die Lisp-Schreibweise der Elemente und kannst nachsehen, nach welchen Eigenschaften Du filtern kannst.Weitere Gefahr mit For ... Each im Zusammenhang mit Löschen == Du hast ein Buch vor Dir liegen, Du reisst die Seite 1 raus und gibst dann den Befehl auf die näc ...
|
In das Form AutoCAD VBA wechseln |
|
AutoCAD VBA : VBA und 3D
alfred neswadba am 31.10.2009 um 20:50 Uhr (0)
Hi Dirk, Mit dem Befehl Umbrenzungdamit beginnt leider schon der erste Problempunkt, diesen Befehl gibt es nicht per API, den kannst Du nur per SendCommand oder per Lisp (command "_bpoly" ... anstarten, es gibt keinen Rückgabewert, eben alle Nachteile, die SendCommand so bringt.Hast Du die Polylinie, kannst Du diese, wie Du schon in den Folgepunkten angeführt hast, extrudieren und (nachdem der Anwender Deiner Applikation den Basisvolumenkörper geklickt hat) auch mittels _subtract weiterarbeiten.Also ist de ...
|
In das Form AutoCAD VBA wechseln |
|
AutoCAD VBA : Auswahl ohne SelectonScreen
alfred neswadba am 02.11.2009 um 21:50 Uhr (0)
Hi,mit VBA kannst Du zwar ein Highlight der Entities auslösen, diese aber nicht mit Griffen versehen. Dazu benötigst Du einen Umweg über Lisp bzw. SendCommand eines Lisp-Befehls, der mit sssetfirst agiert.Siehe auch hier- alfred -------------------www.hollaus.at
|
In das Form AutoCAD VBA wechseln |
|
AutoCAD VBA : Auswahl ohne SelectonScreen
alfred neswadba am 03.11.2009 um 17:00 Uhr (0)
Hi, Wie muss der SendCommand-Befehl aussehen ?Ich hab doch oben einen Link hineingepackt, in dem der Syntax doch enthalten ist. Hier nochmals:Code:(setq pickset (ssadd (handent "dein objekt handle")))(sssetfirst pickset pickset)Und je nachdem, wie schön es sein soll, kannst Du im einfachsten Fall die erste Zeile für jeden Elementhandle wiederholen. Wenn Du das SelectionSet durch hast, dann die zweite Zeile starten.Soll es schöner sein (weil bei größerer Anzahl von Elementen halt viele Zeilen in den Befehls ...
|
In das Form AutoCAD VBA wechseln |
|
AutoCAD VBA : Linie auf Polylinie trimmen
alfred neswadba am 02.12.2009 um 09:22 Uhr (0)
Hi,Code: Dim tPLine As AcadLWPolyline Dim tLine As AcadLine ...tPLine und tLine sollten durch Einleseroutine ja schon bekannt sein Dim tIntPnts As Variant tIntPnts = tLine.IntersectWith(tPLine, acExtendThisEntity) und hier stehen dann die Schnittpunkte drin Wie ruft man die Befehle von VBA aus auf ? Mit SendCommand, aber was ?SendCommand ist hier absolut fehl am Platz, da Du Klicks am Bildschirm durchführen musst (um die Seite der Dehnung zu bestimmen), sollten dann aber mehrere Elemene übereinander ...
|
In das Form AutoCAD VBA wechseln |
|
AutoCAD VBA : Ansichtsfenster per VBA zuschneiden
alfred neswadba am 15.12.2009 um 13:59 Uhr (0)
Hi,Methode (bzw. ein abgeleitetes Interface zu AcadPViewport mit Funktionen dafür) hätte ich auch nicht gefunden. Es wird voraussichtlich darauf hinauslaufen müssen, dies mit SendCommand "_mview" & vbCr & "_o" & vbCr abzuhandeln und eine zuvor erzeugte Polylinie bzw. Region dann zu wählen.Arbeitest Du ev. mit dotNET == da schon. Obs mit Lisp ginge, kann ich Dir leider nicht sagen (würde aber mal nicht ausschliessen, auch da zu suchen).Sorry, - alfred -------------------www.hollaus.at
|
In das Form AutoCAD VBA wechseln |
|
AutoCAD VBA : nach Textteilen im Layernamen suchen
alfred neswadba am 22.02.2011 um 14:01 Uhr (0)
Hi, Was müsst ich noch schreiben das er in deiner Variante die Objekte im ACAD markiert?Markieren (so wie anklicken, sprich die Griffe sind da) geht im VBA nicht, da kannst Du eigentlich nur von VBA aus das LISP zusammensetzen und per SendCommand schicken.Wenn jedoch ein Highlight reichtm dann:Code:Call tEnt.Highlight(True)- alfred -PS: oben hab ich Blödsinn geschrieben (wegen nur Modellbereich..., sorry CADmium ), habs schon editiert------------------www.hollaus.at
|
In das Form AutoCAD VBA wechseln |
|
AutoCAD VBA : vbaentf wird übersprungen bei Punktabfrage
alfred neswadba am 26.06.2010 um 00:37 Uhr (0)
Hi,ich hätte mal die Vermutung, dass alles, was von LISP aus mit (command ... kommt zu dem Zeitpunkt geschickt wird, wenn AutoCAD in der Befehlszeile auf Input wartet. Und genau dann wird eben Dein nachfolgendes LISP-Statement geschickt.Abhilfe könnte dann sein, dass Du schon im Aufruf einen Punkt abfragst und dann diesen Punkt Deiner VBA-Routine übergibst.- alfred -------------------www.hollaus.at
|
In das Form AutoCAD VBA wechseln |
|
AutoCAD VBA : Bögen in Polylinie
alfred neswadba am 12.02.2011 um 13:32 Uhr (0)
Hi,mit VBA direkt schwer, wenn Du von VBA aus LISP aufrufst und von LISP dann die Koordinaten retournierst (retournieren kannst ), dann guck in LISP die Funktionen VLAX-CURVE-.... an (z.B. hier).Damit kannst Du einen Abstand bestimmen (entlang des Linienzugs, kann dann auch SPLINE und sonstwas CURVE-artiges sein) und bekommst für jeden Abstand von Linienzugstartpunkt XYZ-Koordinaten zurück.Mit VBdotNET hast Du direkt Zugriff auf die CURVE-Funktionen, mit VBA leider nicht.- alfred -------------------www.ho ...
|
In das Form AutoCAD VBA wechseln |
|
AutoCAD VBA : beforeprint Ereignis in VBA für AutoCAD ?
alfred neswadba am 16.04.2011 um 22:20 Uhr (0)
Hi,herzlich willkommen bei CAD-de! Mit purem VBA und ohne Tricks == NEINMit VB.NET == JAMit Trick: Du kannst mit LISP Befehle umdefinieren, als solches den Befehl PLOT umdefinieren, darin zuerst Dein VBA-Makro aufrufen und danach den originalen Plot-Befehl anstarten.- alfred -------------------www.hollaus.at
|
In das Form AutoCAD VBA wechseln |