Re(3): VBA-Möglichkeiten erweitern?
Geizhals » Forum » Programmierung » VBA-Möglichkeiten erweitern? (9 Beiträge, 83 Mal gelesen) Top-100 | Fresh-100
Du bist nicht angemeldet. [ Login/Registrieren ]
.  Re: VBA-Möglichkeiten erweitern?  (Somnatic am 11.11.2004, 19:26:39)
..  Re(2): VBA-Möglichkeiten erweitern?  (Glitzerfee am 11.11.2004, 19:56:53)
...  Re(3): VBA-Möglichkeiten erweitern?  (Somnatic am 11.11.2004, 22:48:16)
.  Re: VBA-Möglichkeiten erweitern?  (TheTrumpeter am 11.11.2004, 22:37:29)
..  Re(2): VBA-Möglichkeiten erweitern?  (TheTrumpeter am 11.11.2004, 22:40:12)
...
Re(3): VBA-Möglichkeiten erweitern?
11.11.2004, 23:36:26
hm dankeschön für die Information erstmal!
Für AutoCAD gibts eh ein Buch, wo das alles drinsteht. Ich arbeite aber mit TurboCAD (AutoCAD kann ich mir nicht leisten) und da gibts keine Objekte, die mit Acad... anfangen.
Ich hab mir schon gedacht, dass eigentlich das VBA von AutoCAD und das VBA von TurboCAD ja nicht so unterschiedlich sein können, immerhin ist ja beides VBA und beides hat mit CAD zu tun.
Die Klassen haben aber in TurboCAD andere Namen und auch die Objekte heissen anders. Zum Beispiel gibts nicht "ThisDrawing" sondern das heißt dann immer "Active Drawing".
Ich stell mal einen TurboCAD-Code hier rein, um es zu veranschaulichen:
--------------------------------------------------------------------------------
Sample 2: Edit three parameters (center, coordinate, and radius) of a selected circle.

‘File EDITCIRLE.TCM Edit two coordinates, X and Y, as well as radius R for a selected circle.

'Before running the macro, a circle must be selected.Public Sub EditCircle()

Dim App As Application

Dim ActDr As Drawing

Dim Grs As Graphics

Dim Gr As Graphic

Dim Vers As Vertices

Dim Ver As Vertex

Dim ObjSel As Selection

Dim NumSel As Long, i As Long

Dim GrSelType As String

    Set App = IMSIGX.Application    

    Set ActDr = App.ActiveDrawing  

Set ObjSel = ActDr.Selection ‘Define the selected entities.    
    NumSel = ObjSel.Count       If NumSel = 0 Then Exit Sub    For i = 0 To NumSel - 1        Set Gr = ObjSel.Item(i)
  GrSelType = Gr.Type        If GrSelType = "CIRCLE" Then ‘
Choose the entity of the Circle type.
            Set Vers = Gr.Vertices
            Set Ver = Vers.Item(0)
Dim XcOld#, YcOld#, Xr#, Yr#, ROld#
            XcOld = Ver.X
            YcOld = Ver.Y
            Set Ver = Vers.Item(1)

            Xr = Ver.X
            Yr = Ver.Y
            ROld = Sqr((Xr - XcOld) * (Xr - XcOld) + (Yr - YcOld) * (Yr - YcOld))

UserForm1.TextBox1.Text = CStr(XcOld)
            UserForm1.TextBox2.Text = CStr(YcOld)
            UserForm1.TextBox3.Text = CStr(ROld)
            UserForm1.Show
            Gr.Unselect

Dim XcNew#, YcNew#, RNew#
            XcNew = CDbl(UserForm1.TextBox1.Text)
            YcNew = CDbl(UserForm1.TextBox2.Text)
            RNew = CDbl(UserForm1.TextBox3.Text)

Dim Matr As Matrix ' A transformation matrix
Dim xScale#, yScale#, dx#, dy#
            xScale = RNew / ROld
            yScale = RNew / ROld
            dx = XcNew - XcOld
            dy = YcNew - YcOld
            Set Matr = Gr.Scale(xScale, yScale, 1)
            Set Matr = Gr.MoveRelative(dx, dy, 0)
            Gr.Select
        End If
    Next i
End Sub
--------------------------------------------------------------------------------

Wenn du dich mit AutoCAD-Programmierung gut auskennst, kannst du mir ja sicher, nachdem du den Code angesehen hast, sagen, wie unterschiedlich die Objekte und Klassen sind, oder ob man einen AutoCAD-VBA-Code einfach für TurboCAD umschreiben könnte.

Könnte es nicht eigentlich auch funktionieren, in Visual Basic einen Code wie deinen geposteten zu schreiben und die AutoCAD-Objektbibliotheken in das VB-Projekt einzubinden?
Läuft der Code dann aber in TurboCAD?
Oder geht das nur mit den TurboCAD-eigenen Objektbibliotheken?

Das Problem ist nämlich, über VBA für AutoCAD habe ich ein umfangreiches Buch mit zahlreichen Listings, die man ausprobieren könnte (wenn man AutoCAD hat...) aber für TurboCAD gibts so gut wie keine Dokumentation, die das einem Anfänger erklärt.

lg


Antworten PM Alle Chronologisch Zum Vorgänger
 
Melden nicht möglich
....  Re(4): VBA-Möglichkeiten erweitern?  (TheTrumpeter am 12.11.2004, 07:20:07)
.....  Re(5): VBA-Möglichkeiten erweitern?  (Glitzerfee am 12.11.2004, 12:19:31)
 

Dieses Forum ist eine frei zugängliche Diskussionsplattform.
Der Betreiber übernimmt keine Verantwortung für den Inhalt der Beiträge und behält sich das Recht vor, Beiträge mit rechtswidrigem oder anstößigem Inhalt zu löschen.
Datenschutzerklärung