Hot News aus dem CAD.de-Newsletter:

Unser Angebot:

  Foren auf CAD.de (alle Foren)
  AutoCAD VBA
  Fillet und andere Befehle mit Werten versorgen die die Eingabe mitten im Befehl erwar

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
Autor Thema:   Fillet und andere Befehle mit Werten versorgen die die Eingabe mitten im Befehl erwar (336 mal gelesen)
rexxitall
Mitglied
Dipl. -Ing. Bau


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

Beiträge: 198
Registriert: 07.06.2013

Various: systems, Operating systems, cad systems, cad versions, programming languages.

erstellt am: 26. Feb. 2017 03:57    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

Manche Befehle in Autocad ürde man ja schon gerne in ein VBA einbauen. Auch wenn Sendcommand (zu Recht)verpönt ist.
Aber bevor man wegen einer Kleinigkeit, Vektorrechnung beidhändig schwingt...

Ich wollte Biegformen für Betonbau aus Polygonne erzeugen und mit Biegeradien versehen. Kann man Polygone auslesen, Bulgen berechnen ...
Und wenn man die nachher beschriften will - darf ma die Biegerollenradein erst mal entfernenn...

Der Tip ist auch interessant wenn man ne Menge Polygone runden will
Und nicht jedes einzeln anklicken mag.
Der Trick ist per VBA das entity handle des Objektes der Begierde auszulesen und dem Befehl "unterzujubeln".

Sub POLY_FILLET_Selection_set(selectionset As AcadSelectionSet, rad As Double)
    Dim entity As AcadEntity
    Dim entity2 As AcadEntity
    Dim SS  As AcadSelectionSet
    Dim E() As Object
    Call layer_clone("HLP", "0")
    ReDim E(0)
    Dim SSn As String
    SSn = "SS" & REPLACE(time(), " ", "")
    SSn = "SS" & REPLACE(SSn, ":", "")
    SSn = "SS" & REPLACE(SSn, "_", "")
    SSn = "SS" & REPLACE(SSn, " ", "")
   
    Set SS = Selection_set_create(SSn)
    For Each entity In selectionset
        If InStr(LCASE(entity.objectname), "poly") > 0 Then
            If InStr(LCASE(entity.objectname), "3d") = 0 Then
                Set entity2 = POLY_FILLET(entity, rad, True)
                entity2.COLOR = acYellow
                entity.LAYER = "HLP"
                Set E(0) = entity2
               


On Error Resume Next
SS.Add E(0)
            End If
        End If
    Next
  ' Call selection_set_activate_by_xdata(SS)
    Selection_set_delete_all
End Sub
Function POLY_FILLET(entity As AcadEntity, rad As Double, Optional copy As Boolean) As AcadEntity
    ThisDrawing.SetVariable "FILLETRAD", rad
    If copy Then
        Set POLY_FILLET = entity.copy
    Else
        Set POLY_FILLET = entity
    End If
    Dim s As String
'ACHTUNG HIER KOMMTS mit handent !!! (Lisp reingemogelt)
    s = "_fillet" & vbLf & "P" & vbLf & "(handent " & Chr(34) & POLY_FILLET.handle & Chr(34) & ")" & vbLf
    ThisDrawing.SendCommand s
    On Error GoTo 0
End Function

Happy coding

Thomas

------------------
Wer es nicht versucht, hat schon verlorn 
Und bei 3 Typos gibts den vierten gratis !
<<< for sale !

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)2018 CAD.de