|
AutoCAD VBA : Blockname automatisch generieren und Block einfügen/ersetzen
alfred neswadba am 13.02.2009 um 17:11 Uhr (0)
Hi Georg, Zitat:Sind es Kommazahlen, bekomme ich FehlermeldungSonderzeichen sind in Blocknamen nicht, daher könntest Du diese vorher ersetzen:Code:blockname = "Langloch " + replace(replace(laenge,",","_"),".","_") + "x" + replace(replace(breite,",","_"),".","_") + "_r" + replace(replace(radius,",","_"),".","_") Zitat:das Gleiche Langloch noch mal ein (mit meinem VBA Programm), mit gleichen Namen natürlichda musst Du zuerst überprüfen, ob es schon eine Blockdefinition mit dem Namen existiert, bevor Du eine ...
|
| In das Form AutoCAD VBA wechseln |
|
AutoCAD VBA : nach Textteilen im Layernamen und-color: #FFFF99'>suchen
alfred neswadba am 22.02.2011 um 12:46 Uhr (0)
Hi,dafür wurde der LIKE -Vergleich eingeführt. "ABCD" LIKE "*BC*" == TRUEUnd wenn Du ein SelectionSet baust, dann kannst Du auch Sterne (und Fragezeichen) als Platzhalter verwenden.Code:Public Sub test() Dim tSSet As AcadSelectionSet On Error Resume Next Set tSSet = ThisDrawing.SelectionSets.Add("mySelSet") if Err.Number 0 then Set tSSet = ThisDrawing.SelectionSets("mySelSet") tSSet.Clear end if Dim tDxfCodes(0) As Integer: tDxfCodes(0) = 8 8 für DXFCode-Layername Dim tDxfValues(0) As Variant: t ...
|
| In das Form AutoCAD VBA wechseln |
|
AutoCAD VBA : nach bestimmten elem und-color: #FFFF99'>suchen
alfred neswadba am 13.09.2009 um 13:12 Uhr (0)
Hi, kann da jemand bitte was basteln?diese Aussage ist eigentlich nicht sehr gern gesehen, endet sogar manchmal in: Ja, wohin darf ich das Angebot senden Das Forum dient zur Unterstützung von punktuellen Problemen und ist nicht als Gruppe von externen kostenlosen Mitarbeitern zu sehen.Also wird eine Eigenleistung erforderlich sein und dann zeigst Du den Code und beschreibst, an welcher Zeile Du ein Problem hast.Die grundsätzliche Vorgehensweise:a) Du erzeugst ein SelectionSet, welches als Filter den Objek ...
|
| In das Form AutoCAD VBA wechseln |
|
AutoCAD VBA : Blöcke nach Position und-color: #FFFF99'>suchen
alfred neswadba am 26.03.2009 um 20:42 Uhr (0)
Hi, Zitat:Es können sagen wir mal bis zu maximal 10.000 Blöcke in einer Zeichnung sein. Wie würdest du den nach einem Block und-color: #FFFF99'>suchen so wie zuerst dargestellt, zuerst alle BlockRef selektieren und dann durchscannen mit Vergleich InsertionPoint zu gesuchter Koordinate (+/- Toleranz).Abhängig von der Gesamtgröße der Zeichnung darf das nie mehr als 1sec dauern, wobei der längste Vorgang darin sicher das SelectionSet.Select mit AutoCAD ist.- alfred -PS: ich hab einen kleinen Versuch gemacht, 10000 Blöcke erzeugt ...
|
| In das Form AutoCAD VBA wechseln |
|
AutoCAD VBA : Blöcke nach Position und-color: #FFFF99'>suchen
alfred neswadba am 26.03.2009 um 11:22 Uhr (0)
wieviele zu scannende Blockreferenzen gibt es denn im Modellbereich (durchschnittlich und zu erwartender Maximalwert)?- alfred -------------------www.hollaus.at
|
| In das Form AutoCAD VBA wechseln |
|
AutoCAD VBA : Blöcke nach Position und-color: #FFFF99'>suchen
alfred neswadba am 29.03.2009 um 15:04 Uhr (0)
Hi,Code:if SelSet.Item(x).OwnerID = ThisDrawing.ModelSpace.ObjectID then dann ist das Element x im modellbereichund für den Filter wäre da der DXFCode 410 verantwortlich- alfred -------------------www.hollaus.at
|
| In das Form AutoCAD VBA wechseln |
|
AutoCAD VBA : Blöcke nach Position und-color: #FFFF99'>suchen
alfred neswadba am 26.03.2009 um 20:51 Uhr (0)
ich habe beim Select auch kein SelectCrossing oder SelectWindow oder irgend eine Art von geometrischem Filter!!Ich hoffe mich nicht falsch ausgedrückt zu haben, Select funkt schon, nur in Verbindung mit positionsbestimmenden Filterangaben liefern z.T. Schrott.- alfred -------------------www.hollaus.at
|
| In das Form AutoCAD VBA wechseln |
|
AutoCAD VBA : nach Textteilen im Layernamen und-color: #FFFF99'>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 : Block im aktivem Layout und-color: #FFFF99'>suchen
alfred neswadba am 28.04.2009 um 22:24 Uhr (0)
Hi Georg,bitte nicht Blockdefinition (Block) mit Blockreferenz (BlockReference) vertauschen, Du findest im Layout keine Blockdefinitionen, nur -referenzen.Codebeispiel (durchsucht aktuelles Layout und listet alle Blockreferenz-Namen) wäre:Code:Public Sub ScanLayout() Dim tAcadEnt As AcadEntity For Each tAcadEnt In ThisDrawing.ActiveLayout.Block If TypeOf tAcadEnt Is AcadBlockReference Then Debug.Print tAcadEnt.Name End If NextEnd Sub- alfred -------------------www.hollaus.at
|
| In das Form AutoCAD VBA wechseln |
|
AutoCAD VBA : Blöcke nach Position und-color: #FFFF99'>suchen
alfred neswadba am 26.03.2009 um 08:42 Uhr (0)
Hi,Vorsicht bei SelectBefehlen, die was mit Bildschirm-Inhalt zu tun haben, denn wenn das gewünschte Objekt ausserhalb des sichtbaren Bereichs ist, geht schon mal relativ wenig.Ebenfalls Vorsicht, der Zoom-Ausschnitt kann hier auch schon mal eine große Rolle spielen, denn weit heraus (weit weg) gezoomt und Die Anzahl der Elemente, die AutoCAD z.B. bei SelectCrossing erwischt, steigt Und dann wären dann auch noch die Koordinaten mit vielen, vielen Dezimalstellen, d.h. es gobt Situationen, da fügst Du eine ...
|
| In das Form AutoCAD VBA wechseln |
|
AutoCAD VBA : Blöcke nach Position und-color: #FFFF99'>suchen
alfred neswadba am 26.03.2009 um 11:53 Uhr (0)
Hi,nochmals mein Hinweis: vorsicht vor den SelectMethoden!Ich veranschauliche das mit folgendem Beispiel:Ein Block mit Inhalt ein Kreis (in der Blockdefinition Radius 1), eingefügt bei Koordinate 10,10folgender Code dazu:Code:Public Sub mySelect() Dim tSSet As AcadSelectionSet On Error Resume Next Set tSSet = ThisDrawing.SelectionSets.Add("pSSet") If tSSet Is Nothing Then Set tSSet = ThisDrawing.SelectionSets.Item("pSSet") tSSet.Clear Dim tPntArr(11) As Double tPntArr(0) = 9.5: tPntArr(1) = 9.5: t ...
|
| In das Form AutoCAD VBA wechseln |
|
AutoCAD VBA : Blockattribute in eine Textdatei schreiben
alfred neswadba am 30.09.2009 um 22:14 Uhr (0)
Hi,verstehe ich richtig, Dein bisheriges Handling führt dazu, dass bereits die TXT-Datei fertig rauskommt, es geht nur mehr um Umbenennen der Datei und um das Entfernen der ersten Zeile (der Überschriften) und das Ersetzen von TAB nach |?Das geht mit AutoCAD-VBA gleich wie mit Excel-VBA.AutoCAD-seitig brauchst Du eigentlich nur den Namen der Datei, den kannst Du mitCode:ThisDrawing.Nameherausholen.Das Datei öffnen, die Überschrift vernichten und die Tabs ersetzen ist ident zu anderen VBAs- alfred --------- ...
|
| In das Form AutoCAD VBA wechseln |
|
AutoCAD VBA : Block mit bestimmten Attribut
alfred neswadba am 21.01.2009 um 21:53 Uhr (0)
Hi,willkommen bei CAD-de!!Lass mich/uns mal wissen, was Du denn grundsätzlich machen willst. Denn wenn Du nur nach dem Attribut und-color: #FFFF99'>suchen willst, um z.B. dorthinzufinden (hinzoomen, markieren, bearbeiten), dann brauchst Du kein Macro, das geht mit und-color: #FFFF99'>suchen/_find auch schon in AutoCAD direkt.Der Code, den ich damals geschrieben hatte, war nur ein Teil von etwas größerem (ein Schnippsel als Basis zum darauf Aufbauen)und hat einzeln so wenig Sinn.- alfred -------------------www.hollaus.at
|
| In das Form AutoCAD VBA wechseln |