Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de
  AutoCAD VBA
  MaßstabsListe auslesen

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
  
Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte
  
Von Digital Twins bis Hochleistungs-Computing: PNY präsentiert seine Zukunftstechnologien für die Industrie von morgen, eine Pressemitteilung
Autor Thema:  MaßstabsListe auslesen (1231 mal gelesen)
reltro
Mitglied
student


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

Beiträge: 125
Registriert: 08.11.2009

Acad 2012 - VBA,Lisp
Revit 2012
3dsMax 2012
Rhino 5 - GH,Pyhton,rhino.Common<P>Win 7 - i7 4x3.2GHz - 8Gb DDR3

erstellt am: 18. Mrz. 2012 14:09    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

hello liebes Forum...

hm, das Thema wurde ja schon öfters hier im forum behandelt, nur ergab sich daraus nie ein lösung, bzw. ich konnte sie nicht finden.

man sagt hier es gäbe keine Möglichkeit die in der Zeichnung vorhandenen Maßstäbe per VBA auszulesen; jedoch soll es anscheinend eine möglichkeit mit .net geben?

Kann mir vielleicht jemand zur Seite stehn und mir beibringen wie man die vorhandenen Maßstäbe ausliest.
In .net kenn ich mich nicht aus.
Neben VBA wär LISP machbar für mich.

Über Antworten spring ich in die Luft : )
LG
reltro

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

CAD-Huebner
Ehrenmitglied V.I.P. h.c.
Verm.- Ing., ATC-Trainer



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

Beiträge: 9807
Registriert: 01.12.2003

AutoCAD 2.5 - 2022, LDD, MDT, RD, ADT, Civil
Inventor AIP 4-11, 2008 -2022
Win 10

erstellt am: 18. Mrz. 2012 17:14    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 Nur für reltro 10 Unities + Antwort hilfreich

Hast du diesen Beitrag und die dort verlinkten Beiträge (z.B. zu Scalelistdel.lsp) schon durch? http://ww3.cad.de/foren/ubb/Forum259/HTML/001680.shtml

------------------
Mit freundlichem Gruß

Udo Hübner
www.CAD-Huebner.de

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

reltro
Mitglied
student


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

Beiträge: 125
Registriert: 08.11.2009

Acad 2012 - VBA,Lisp
Revit 2012
3dsMax 2012
Rhino 5 - GH,Pyhton,rhino.Common<P>Win 7 - i7 4x3.2GHz - 8Gb DDR3

erstellt am: 27. Mrz. 2012 11:24    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

So...
Habe nun die Dinge durchgeschaut und bin zu einer Lösung gekommen:

Folgendes steht in einem ClassModul des Namens "EvalLisp":

Code:

Private VL As Object
Private VLF As Object
Private VL_Read As Object
Private VL_Eval As Object
Private VL_Set As Object
'---------------------------------------------------------------------------------
'---------------------------------------------------------------------------------
Private Sub Class_Initialize()
    Dim C_cmdecho As Integer
        C_cmdecho = ThisDrawing.GetVariable("cmdecho")
   
    Call ThisDrawing.SetVariable("cmdecho", 0)
        ThisDrawing.SendCommand ("(vl-load-com)" & vbCr)
    Call ThisDrawing.SetVariable("cmdecho", C_cmdecho)
   
    Set VL = ThisDrawing.Application.GetInterfaceObject("VL.Application.16")
    Set VLF = VL.ActiveDocument.Functions
   
    Set VL_Read = VLF.Item("read")
    Set VL_Eval = VLF.Item("eval")
    Set VL_Set = VLF.Item("set")
End Sub

Private Sub Class_Terminate()
    Set VL_Eval = Nothing
    Set VL_Read = Nothing
    Set VLF = Nothing
    Set VL = Nothing
End Sub
'---------------------------------------------------------------------------------
'---------------------------------------------------------------------------------
Public Function GetLispVar(ByVal Name As String) As Variant
   
    On Error GoTo Ende

    Dim Sym As Object
    Set Sym = VL_Read.funcall(Name)

    Dim Out As Variant
    Out = VL_Eval.funcall(Sym)
   
    GetLispVar = Out
    On Error GoTo 0
    Exit Function
Ende:
    On Error GoTo 0
    If isList_LispVar(Name) _
        Then
            Out = readList(Name)
    End If
    GetLispVar = Out

End Function
'---------------------------------------------------------------------------------
Public Function SetLispVar(ByVal Name As String, ByVal Value) As Variant
   
    On Error GoTo Ende

    Dim Sym As Object
    Set Sym = VL_Read.funcall(Name)

    Dim Out As Variant
    Out = VL_Set(Sym, Value)
   
Ende:
    On Error GoTo 0
'------------------------------
    SetLispVar = Out

End Function
'---------------------------------------------------------------------------------
Private Function isList_LispVar(Name As String) As Boolean

    Dim Sym As Object
    Set Sym = VL_Read.funcall("(vl-princ-to-string (type " & Name & "))")

    Dim Out As Variant
        Out = VL_Eval.funcall(Sym)
       
    If StrComp("List", Out, vbTextCompare) = 0 _
        Then
            isList_LispVar = True
        Else
            isList_LispVar = False
    End If
   
End Function
'---------------------------------------------------------------------------------
Private Function readList(Name As String) As Variant

    Dim Sym As Object
    Set Sym = VL_Read.funcall("(length " & Name & ")")
   
    Dim Out As Variant
        Out = VL_Eval.funcall(Sym)
   
    Dim Lst() As Variant
    Dim toRead As String
   
    For i = 0 To Out - 1
        toRead = "(nth " & i & " " & Name & ")"
        If isList_LispVar(toRead) _
            Then
                ReDim Preserve Lst(0 To i) As Variant
                Lst(i) = readList(toRead)
            Else
                Set Sym = VL_Read.funcall(toRead)
       
                ReDim Preserve Lst(0 To i) As Variant
                Lst(i) = VL_Eval.funcall(Sym)
        End If
    Next i
   
    readList = Lst
End Function
'---------------------------------------------------------------------------------
Public Function SendLisp(Expr As String) As Boolean

    On Error GoTo Fehler
   
    Dim Sym As Object
    Set Sym = VL_Read.funcall(Expr)
   
    Dim Out As Variant
        Out = VL_Eval.funcall(Sym)
   
    SendLisp = True
    On Error GoTo 0
   
: Exit Function
   
Fehler:
    On Error GoTo 0
    SendLisp = False
   
End Function


Wieder folgendes steht im Code, wo auch immer benötigt:

Code:

Private Function ScaleList() As Variant

    Dim LispExpr As String
        LispExpr = _
            "(progn " & _
                "(setq VBA_SCALE_LIST 'nil)" & _
                "(foreach item (dictsearch (namedobjdict) (vl-princ-to-string 'ACAD_SCALELIST))" & _
                    "(if (= 350 (car item))" & _
                        "(setq " & _
                            "VBA_SCALE_LIST " & _
                            "(cons (strcase (cdr (assoc 300 (entget (cdr item))))) VBA_SCALE_LIST)" & _
                        ")" & _
                    ")" & _
                ") " & _
                "VBA_SCALE_LIST" & _
            ")"
   
    Dim Lisp As New EvalLisp
   
    ScaleList = Lisp.GetLispVar(LispExpr)

End Function



Das "EvalLisp" hab ich von den Links die du mir gegeben hast zusammengebastelt. Ich bin mir sicher dass man es besser und allgemeiner halten kann. aber ja, es spuckt die AnnotativeScales aus, und das ist das was ich brauche.

Ich hätte den Lisp-ausdruck ja gern in eine lambda-Funktion verpackt um den NameSpace der Variablen nicht zu zerstören, aber irgendwie lässt mich das Ding sowas nicht machen.
-> '(lambda ( / VBA_Scale_list ) (Foreach . . . . ) VBA_Scale_list)

Vielen Dank für die Umleitung, Udo
Lg
reltro

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)2025 CAD.de | Impressum | Datenschutz