Hot News:

Unser Angebot:

  Foren auf CAD.de (alle Foren)
  AutoCAD VBA
  ARX-Fehler: eWasOpenForWrite

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
Autor Thema:  ARX-Fehler: eWasOpenForWrite (1146 mal gelesen)
KlaK
Ehrenmitglied V.I.P. h.c.
Dipl. Ing. Vermessung, CAD- und Netz-Admin



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

Beiträge: 2624
Registriert: 02.05.2006

AutoCAD LandDesktop R2 bis 2004
Civil 3D 2005 - 2022
Plateia, Canalis
Visual Basic

erstellt am: 08. Nov. 2016 17: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

Hallo,
Bin gerade am verzweifeln, da ein Programm mit dem ich schon tausende Profile erzeugt habe jetzt nicht mehr mag  

Zum Programm:
Aus einer dwg mit allen Profile werden auf Grund des Stempels die Profile in einzelne Zeichnungen kopiert und als Einzelprofile in dwg gespeichert und pdf erzeugt

Code:

    Dim Doc1Obj As AcadDocument ' Ausgangsdatei
    Dim Doc2Obj As AcadDocument ' Zieldatei
    Dim SSetDWG As AcadSelectionSet
    Dim objCollection() As Object ' Hier werden die zu kopierenden Objekte gespeichert
    Dim retObj As Variant
    Set Doc1Obj = ThisDrawing.Application.ActiveDocument

    ' Hier erfolgt die Auswahl der Objekt und übernahme in den Selectionset

    ReDim objCollection(SSetDWG.Count - 1) As Object
    For I1 = 0 To SSetDWG.Count - 1
      Set objCollection(I1) = SSetDWG.Item(I1)
    Next I1
   
    sDwgName = sProfilName & ".dwg" '".pdf" Form1.Txt_PfadNeu.Text &
    Set Doc2Obj = ThisDrawing.Application.Documents.Add '(sDwgName) 'wäre eine Vorlage
    retObj = Doc1Obj.CopyObjects(objCollection, Doc2Obj.ModelSpace) ' <= Hier kommt der ARX-Fehler
    Doc2Obj.Activate
    ZoomExtents 'ZoomAll


Prüfung bringt keine Fehler, auch das vorheige Speichern der neuen Zeichnung bringt nichts
Im Step-Modus (F8) springt das Programm auch ganz merkwürdige Stellen.

Zweites Problem:
Obwohl die Elemente mit SS.Select acSelectionSetWindow, Corner1, Corner2, FilterType, FilterData
von links nach rechts ausgewählt werden (vorher wird auf diesen leicht vergrößerten Ausschnitt gezoomt) werden auch angeschnittene Elemente ausgewählt. Das war früher nicht der Fall.

Hat irgendjemand Ideen?
Bin mir nicht sicher ob ich das Programm unter VBA7 - Win8.1 schon mal hab laufen lassen, evtl. wars ja noch unter Windows XP (hab den PC erst letztes Jahr auf Win 8 umgestellt. Civil 3D 2014 wars auf alle Fälle.

Grüße
Klaus  

[Edit] Quatsch, C3D 2014 läuft ja nur unter 64 Bit, war also ein Vorgängerversion ...

[Diese Nachricht wurde von KlaK am 08. Nov. 2016 editiert.]

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

Brischke
Ehrenmitglied V.I.P. h.c.
CAD on demand GmbH



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

Beiträge: 4171
Registriert: 17.05.2001

ACAD20XX, defun-tools

erstellt am: 09. Nov. 2016 16:54    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 KlaK 10 Unities + Antwort hilfreich

... keine Ahnung ob es derlei dinge auch in VBA gibt (ich denke schon) aber ich kopiere mit .Net Zeichnungsübergreifend immer mit WblockCloneObjects, was zudem den Vorteil hat, dass man das auf Basis der Zeichnungsdatenbank erledigen kann, ohne die Zeichnung am Bildschirm zu öffnen und deshalb auch einen erheblichen Performancegewinn darstellt.

Grüße!
Holger

------------------
Holger Brischke
CAD on demand GmbH
Individuelle Lösungen von Heute auf Morgen.


defun-tools Das Download-Portal für AutoCAD-Zusatzprogramme!


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

KlaK
Ehrenmitglied V.I.P. h.c.
Dipl. Ing. Vermessung, CAD- und Netz-Admin



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

Beiträge: 2624
Registriert: 02.05.2006

AutoCAD LandDesktop R2 bis 2004
Civil 3D 2005 - 2022
Plateia, Canalis
Visual Basic

erstellt am: 09. Nov. 2016 17:20    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

Danke, werde ich mal nachsehen

Grüße
Klaus

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

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: 266
Registriert: 07.06.2013

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

erstellt am: 10. Nov. 2016 01:37    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 KlaK 10 Unities + Antwort hilfreich

Hi

HM so was ähnliches hatte ich neulich auch beim umstieg auf ne neuere ACAD Version. Problematisch waren das Interface Objekt. Und das ganze scheint auch etwas pingeliger geworden zu sein.

Da mir die Interface Objecte ziemlich auf den Geist gegangen sind hab ich sie alle in eine Klasse ausgelagert. Das Thema Interface ist seither Geschichte 

Vielleicht hilft ja folgender Code.
Gruß
Thomas

Function block_definitions_copy_from_drawing_by_list(ByVal strBlockName As String, ByVal strPath As String, Optional delimiter As String = "") As String
    Dim strFullDef As String
    Dim objBlock As AcadBlock
    Dim colBlocks As AcadBlocks
    Dim objArray(0) As Object
    Dim ACDbx As Object

    Dim RESULT As String
    Dim CURRBK As String
    Dim blks() As String

    If delimiter <> "" Then
        blks = Split(strBlockName, delimiter)
    Else
        ReDim blks(0)
        blks(0) = strBlockName
    End If


    Set ACDbx = AINTERFACE.IDoc()
    If strPath = "" Then Exit Function
    ACDbx.Open strPath
    Set colBlocks = ACDbx.BLOCKS

    For I = 0 To UBound(blks)
        strBlockName = blks(I)


        If Trim(strBlockName) <> "" Then
            On Error Resume Next
            err.Clear
            Set objBlock = colBlocks.ITEM(strBlockName)    'Find appropriate block in container file's Blocks Collection
            On Error GoTo 0
            If err.number = 0 Then
                Set objArray(0) = objBlock    'Create object array as required by the CopyObjects Method
                ACDbx.CopyObjects objArray, ThisDrawing.BLOCKS    'Copy to current drawing's Blocks Collection
                'ACDbx.SaveAs strPath
            End If
        End If

        For Each objBlock In ThisDrawing.BLOCKS
            If objBlock.Name = strBlockName Then
                objBlock.Name = REPLACE(objBlock.Name, "$", "_")
                RESULT = RESULT & objBlock.Name & delimiter
            End If
        Next
    Next

    Set ACDbx = Nothing
    block_definitions_copy_from_drawing_by_list = RESULT
End Function

CLASS AINTERFACE

Private Type interfaces
    Application As Object
    AcadLayerStateManager As Object
    AxDbDocument As Object
    AcCmColor As Object
    VLApplication As Object
    AppName As String
    AppNameVertical  As String
    VBE As Object
    INITIALIZED As Boolean
End Type

Private PINTERFACE As interfaces

Function GET_INTERFACE(INTERFACE As String) As Object
    Dim strAcadVersion As String
    With PINTERFACE.Application
        strAcadVersion = MID(.version, 1, 2)
        If CInt(strAcadVersion) < 16 Then
            Set GET_INTERFACE = AcadApplication.GetInterfaceObject(INTERFACE)
        Else
        On Error Resume Next
        If INTERFACE = "AutoCAD.Application" Then
   
        Set GET_INTERFACE = AutoCAD.Application
        Exit Function
        End If
        If INTERFACE = "VL.Application" Then
            Call CreateObject("VL.Application")
        End If
       
            Set GET_INTERFACE = GetInterfaceObject(INTERFACE)
            If GET_INTERFACE Is Nothing Then
                Set GET_INTERFACE = GetInterfaceObject(INTERFACE & "." & strAcadVersion)
            End If
        End If
    End With
End Function

Private Sub Class_Initialize()
    Dim strName As String
    If PINTERFACE.INITIALIZED = True Then Exit Sub
    Set PINTERFACE.Application = Application
    Set PINTERFACE.AcadLayerStateManager = GET_INTERFACE("AutoCAD.AcadLayerStateManager")
    Set PINTERFACE.AxDbDocument = GET_INTERFACE("ObjectDBX.AxDbDocument")
    Set PINTERFACE.AcCmColor = GET_INTERFACE("AutoCAD.AcCmColor")
    Set PINTERFACE.VLApplication = GET_INTERFACE("VL.Application")
    Set PINTERFACE.Application = GET_INTERFACE("AutoCAD.Application")
    Set PINTERFACE.VBE = Application.VBE
    PINTERFACE.AppName = PINTERFACE.Application.CAPTION
    strName = PINTERFACE.Application.CAPTION
    PINTERFACE.AppNameVertical = left(strName, InStr(1, strName, " -"))
    PINTERFACE.INITIALIZED = True
   
End Sub

Public Sub init()
    Call Class_Initialize
End Sub

Public Property Get IColor() As Object
If Not PINTERFACE.INITIALIZED Then Call Class_Initialize
Set IColor = PINTERFACE.AcCmColor
End Property

Public Property Get IVBE() As Object
If Not PINTERFACE.INITIALIZED Then Call Class_Initialize
Set IVBE = PINTERFACE.VBE
End Property


Public Property Get Ilayer() As Object
    If Not PINTERFACE.INITIALIZED Then Call Class_Initialize
Set Ilayer = PINTERFACE.AcadLayerStateManager
End Property

Public Property Get ILisp() As Object
    If Not PINTERFACE.INITIALIZED Then Call Class_Initialize
  Set ILisp = PINTERFACE.VLApplication
End Property


Public Property Get Iapp() As Object
    If Not PINTERFACE.INITIALIZED Then Call Class_Initialize
    Set Iapp = PINTERFACE.Application
End Property
Public Property Get IDoc() As Object
    If Not PINTERFACE.INITIALIZED Then Call Class_Initialize
    Set IDoc = PINTERFACE.AxDbDocument
End Property
Public Property Get IAppName() As String
    If Not PINTERFACE.INITIALIZED Then Call Class_Initialize
    IAppName = PINTERFACE.AppName
End Property
Public Property Get IAppNameVertical() As String
    If Not PINTERFACE.INITIALIZED Then Call Class_Initialize
    IAppNameVertical = PINTERFACE.AppNameVertical
End Property

Public Function INTERFACE(INAME As String) As Object
    Dim testname As String
Set INTERFACE = Nothing
    If Not PINTERFACE.INITIALIZED Then Call Class_Initialize
    Select Case LCASE(INAME)
        Case "acadlayerstatemanager"
            INTERFACE = PINTERFACE.AcadLayerStateManager
        Case "axdbdocument"
            INTERFACE = PINTERFACE.AxDbDocument
        Case "accmcolor"
            INTERFACE = PINTERFACE.AcCmColor
        Case "vlapplication"
            INTERFACE = PINTERFACE.VLApplication

        Case "application"
            INTERFACE = PINTERFACE.Application
        Case Else
            Set INTERFACE = GET_INTERFACE(INAME)
    End Select
End Function

------------------
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

Ingenieur Studio HOLLAUS
Mitglied
CAD / CAFM / GIS Beratung-Programmierung-Schulung


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

Beiträge: 1049
Registriert: 06.11.2008

Autocad 2 bis Autocad 2020 (+Map3D, +Civil3D, +Infraworks)
RKV .... CAFM+mehr
HMap ... Vermessung und Verkehr
OoC .... Raumplanung
CBox ... Tools für AutoCAD und BricsCAD (kostenfrei)

erstellt am: 12. Nov. 2016 13: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 Nur für KlaK 10 Unities + Antwort hilfreich

Zitat:
Aus einer dwg mit allen Profile werden auf Grund des Stempels die Profile in einzelne Zeichnungen kopiert und als Einzelprofile in dwg gespeichert und pdf erzeugt
Civil 3D Profile? Ich hätte schwer den Verdacht, dass man zwar AutoCAD Objekte in andere DWG's kopieren kann, aber nicht Objekte, die von vertikalen Applikationen kommen und Abhängigkeiten haben!

Wenn nur das PDF gebraucht wird, dann würde ich ein Layout machen, das Profil im Ansichtsfenster zurechtrücken und plotten (DWG to PDF.pc3).

Wenn tatsächlich die DWG gebraucht wird, dann probiere das Civil 3D Profil mit _EXPLODE "zu behandeln", und den daraus resultierenden Block (der nur mehr AutoCAD Geometrie enthält) in eine neue DWG zu kopieren.

Viel Erfolg!

------------------


www.cars4fun.at

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

KlaK
Ehrenmitglied V.I.P. h.c.
Dipl. Ing. Vermessung, CAD- und Netz-Admin



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

Beiträge: 2624
Registriert: 02.05.2006

AutoCAD LandDesktop R2 bis 2004
Civil 3D 2005 - 2022
Plateia, Canalis
Visual Basic

erstellt am: 12. Nov. 2016 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

Nein, sind keine Civil 3D Profile, die werden aus einer Datenbank (Vermessungsdaten) aufgebaut und um, mit einem anderen Programm berechneten, Wasserständen ergänzt und zur Kontrolle und für Zusatzbeschriftungen alle in einer Zeichnung abgebildet.
Im Block Profilkopf ist die Größe hinterlegt damit für die Abgabe einzelne DWG und PDF-Plot erzeugt werden können.

Das Profil im Ansichtsfenster zurechtrücken und plotten ist kein guter Ansatz, schließlich handelt es sich dabei meist um 300 bis 900 Profile (im aktuellen Fall 2 Flüsse mit insgesamt 700 Profilen). Automatisch (über Programm) werden da sechs bis 10 Profile pro Minute extrahiert und geplottet, ja nachdem was im Vordergrund gearbeitet wird. Wenn das ein Zeichner macht braucht man sicherlich mind. 1 Minute pro Profil und die richtige Beschriftung ist auch Fehleranfälliger.

Werde bei Gelegenheit versuchen den Fehler herauszufinden, einzige Änderung auf meinem PC war die Installation der Infrastruktur Design Suite. Im Netz habe ich Hinweise gefunden, dass Raster Design da manchmal Probleme machen kann. Werde das mal auf einem PC ohne IDS testen. Oder den Firmenstempel (jpg-Datei) mal weglassen, dann wären nur reine Autocad-Elemente in der Zeichnung.

Jetzt habe ich das auf die Schnelle mit Bricscad V12 und einer älteren 32-Bit dvb-Version gelöst, hatten ja am Freitag Abgabe ...

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