.NET

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

How to use the command "-etransmit"

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

 

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)
Mentor
SENL1362
Posts: 213
Registered: ‎07-20-2011
Message 2 of 4 (208 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)
Distinguished Mentor
gasty1001
Posts: 579
Registered: ‎04-11-2010
Message 3 of 4 (204 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: 398
Registered: ‎01-27-2010
Message 4 of 4 (177 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.

Post to the Community

Have questions about Autodesk products? Ask the community.

New Post
Announcements
Are You Going To Be @ AU 2014? Feel free to drop by our AU topic post and share your plans, plug a class that you're teaching, or simply check out who else from the community might be in attendance. Ohh and don't forgot to stop by the Autodesk Help | Learn | Collaborate booths in the Exhibit Hall and meet our community team if you get a chance!