.NET

Reply
Valued Mentor
AubelecBE
Posts: 370
Registered: ‎01-27-2010
Message 1 of 4 (218 Views)
Accepted Solution

How to use the command "-etransmit"

218 Views, 3 Replies
01-23-2014 03:37 AM

HI.

i want to save my drawing with the xref so i want to launch "-etransmit" here my code:

 

  Application.SetSystemVariable("FILEDIA", 0)
                                doc.SendStringToExecute("-etransmit" & vbCr & _
                                                        "CH" & vbCr & _
                                                        "archivage" & vbCr & _
                                                        "C" & vbCr & _
                                                         "" & Txt & "" & vbCr, True, False, True)

So the TXT contain my path+filename (.zip)

"archivage" is the config for etransmit.

 

i need to set to 0 the FILEDIA for force my path+name.

 

it work fine but how i can set to 1 the var ? FILEDIA.

 

the SendStringToExecute is execute after the end of my prog so i cant add the code after this.

 

Need to use event ?

 

I tryed to use this :

 

'***********************************************************************
    '**  Fonction Lancement d'une commande Synchrone sur la ligne         **
    '**   de commande d'Autocad                                           **
    '***********************************************************************
    '** ENTREE (exemple)                                                  **
    '**   Tracé une ligne :
    '**     CommandeSync("_.line", New Point3d(10.0, 20.0, 0.0), New Point3d(80.0, 50.0, 0.0), "")
    '**   Freeze du calque 0                                              
    '**     CommandeSync("_.vplayer", "_freeze", "0", "_select", "\", "", "")
    '**
    '** Note:
    '**   - an empty string ("") means a validation (Enter)
    '**   - an anti-slash ("\" with VB or "\\" with C#) means a pause for user input.
    '**
    '**   - Texte : Le texte à afficher                                   **
    '***********************************************************************
    '** with A2013, replace "acad.exe" with "accore.dll" in the DllImport attribute arguments.
    '*******************************************************************************************
    <System.Security.SuppressUnmanagedCodeSecurity()> _
        <System.Runtime.InteropServices.DllImport("acad.exe", _
              EntryPoint:="acedCmd", _
              CharSet:=System.Runtime.InteropServices.CharSet.Unicode, _
              CallingConvention:=System.Runtime.InteropServices.CallingConvention.Cdecl)> _
    Private Function acedCmd(ByVal resbuf As IntPtr) As Integer
    End Function

    '''<summary>
    ''' Call an AutoCAD command (runs synchronously).
    ''' </summary>
    ''' <param name="args">The command name followed by command inputs.</param>
    ''' 
    Public Sub LigneCommandeImmediate(ByVal ParamArray args As Object())
        Dim resbuf As New ResultBuffer()
        For Each obj As Object In args
            Select Case obj.GetType().Name
                Case "String"
                    resbuf.Add(New TypedValue(CInt(Autodesk.AutoCAD.Runtime.LispDataType.Text), obj))
                    Exit Select
                Case "Int16"
                    resbuf.Add(New TypedValue(CInt(Autodesk.AutoCAD.Runtime.LispDataType.Int16), obj))
                    Exit Select
                Case "Int32"
                    resbuf.Add(New TypedValue(CInt(Autodesk.AutoCAD.Runtime.LispDataType.Int32), obj))
                    Exit Select
                Case "Double"
                    resbuf.Add(New TypedValue(CInt(Autodesk.AutoCAD.Runtime.LispDataType.[Double]), obj))
                    Exit Select
                Case "Point2d"
                    resbuf.Add(New TypedValue(CInt(Autodesk.AutoCAD.Runtime.LispDataType.Point2d), obj))
                    Exit Select
                Case "Point3d"
                    resbuf.Add(New TypedValue(CInt(Autodesk.AutoCAD.Runtime.LispDataType.Point3d), obj))
                    Exit Select
                Case "ObjectId"
                    resbuf.Add(New TypedValue(CInt(Autodesk.AutoCAD.Runtime.LispDataType.ObjectId), obj))
                    Exit Select
                Case "ObjectId[]"
                    For Each id As ObjectId In DirectCast(obj, ObjectId())
                        resbuf.Add(New TypedValue(CInt(Autodesk.AutoCAD.Runtime.LispDataType.ObjectId), id))
                    Next
                    Exit Select
                Case "ObjectIdCollection"
                    For Each id As ObjectId In DirectCast(obj, ObjectIdCollection)
                        resbuf.Add(New TypedValue(CInt(Autodesk.AutoCAD.Runtime.LispDataType.ObjectId), id))
                    Next
                    Exit Select
                Case "SelectionSetDelayMarshalled", "SelectionSetFullyMarshalled"
                    resbuf.Add(New TypedValue(CInt(Autodesk.AutoCAD.Runtime.LispDataType.SelectionSet), obj))
                    Exit Select
                Case Else
                    Throw New InvalidOperationException("Unsupported type in Command() method")
            End Select
        Next

        acedCmd(resbuf.UnmanagedObject)
    End Sub

 but not wotking. i need to execute de etransmit immediately and after set to 1 the FILEDIA. How i can do ?

 

Mentor
SENL1362
Posts: 150
Registered: ‎07-20-2011
Message 2 of 4 (180 Views)

Re: How to use the command "-etransmit"

01-24-2014 09:35 AM in reply to: AubelecBE
It wouldn't be my idea of creating a zipped folder containing all referenced data, but maybe you could add filedia to you're command line
doc.SendStringToExecute("FILEDIA 0 -etransmit" & vbCr & _
"CH" & vbCr & _
"archivage" & vbCr & _
"C" & vbCr & _
"" & Txt & "" & vbCr & "FILEDIA 1" & vbCr, True, False, True)
Valued Mentor
gasty1001
Posts: 448
Registered: ‎04-11-2010
Message 3 of 4 (176 Views)

Re: How to use the command "-etransmit"

01-24-2014 10:08 AM in reply to: AubelecBE

Hi,

 

Did you see this: etransmit

 

Gaston Nunez

Valued Mentor
AubelecBE
Posts: 370
Registered: ‎01-27-2010
Message 4 of 4 (149 Views)

Re: How to use the command "-etransmit"

01-27-2014 03:25 AM in reply to: gasty1001

gasty, your solution need interop. it is annoying to do this. I have many PC and system. (XP, Seven 64b).

so it is much better to add FILEDIA in the SendString.

 

But you have to check if the dwg is saved and not modified.

 

Works fine now.

 

Thank to you 2.

You are not logged in.

Log into access your profile, ask and answer questions, share ideas and more. Haven't signed up yet? Register

Announcements
Are you familiar with the Autodesk Expert Elites? The Expert Elite program is made up of customers that help other customers by sharing knowledge and exemplifying an engaging style of collaboration. To learn more, please visit our Expert Elite website.

Need installation help?

Start with some of our most frequented solutions to get help installing your software.

Ask the Community