Macro

BRM

Utente Standard
Professione: Disegnatore
Software: cocreate drafting,solid edge
Regione: Emilia Romagna
#1
Buongiorno a tutti vorrei cominciare a capire come funzionano le macro di solid edge, so che si utilizza linguaggio vb ma vorrei sapere per partire come trovo i nomi dei vari comandi di solid edge tipo cosa si nasconde dietro ai pulsanti dei menu. Ho visto il manuale del programmatore ma come si parte?
Gazie per l'aiuto.
 

Tequila

Utente Senior
Professione: teorico del paleocontatto
Software: Solid Edge ST7, scarabocchi su carta
Regione: Veneto (PD)
#2
ciao, non sono un programmatore ma la cosa che potrei consigliarti è quella di ricreare gli esempi che ci sono in quel manuale, oppure di ricreare e in seguito modificare gli esempi che trovi di default nell'installazione di solid edge.

C:\Program Files\Solid Edge ???\Custom

inoltre ti rimando a questa parte del forum specifica per macro http://www.cad3d.it/forum1/showthread.php?t=18898 dove puoi anche trovare link a siti che ne parlano.

ciao
 

cacciatorino

Moderatore SolidEdge
Staff Forum
Professione: Ingegnere meccanico
Software: SolidEdge CoCreate Salome-Meca
Regione: Porto Recanati, ma con l'appennino nel cuore
#3
Buongiorno a tutti vorrei cominciare a capire come funzionano le macro di solid edge, so che si utilizza linguaggio vb ma vorrei sapere per partire come trovo i nomi dei vari comandi di solid edge tipo cosa si nasconde dietro ai pulsanti dei menu. Ho visto il manuale del programmatore ma come si parte?
Gazie per l'aiuto.
C'e' il software "Solid Edge Spy" sul sito di Jason Newell, prova a vedere se e' ancora disponibile gratuitamente.

http://www.jasonnewell.net/products/solid-edge-spy.html
 

vespa_83

Utente Standard
Professione: disegnatore
Software: Solid Edge
Regione: Romagna
#4
BRM: hai un ambiente di sviluppo? hai mai masticato della programmazione?

molto dipende dal tuo obiettivo, si può programmare in tanti molti (ma non ce nè uno semplice).

Notepad, VBA di Excel, Visual studio express o SharpDevelop.

Linguaggi: vb , c#, ... io ho provato anche 'lua' (require luacom per connettersi tramite COM a SolidEdge)

per partire leggiti un po' i miei post.
Ecco i miei esempi: http://www.cad3d.it/forum1/showpost.php?p=263656&postcount=19

ciao
 

BRM

Utente Standard
Professione: Disegnatore
Software: cocreate drafting,solid edge
Regione: Emilia Romagna
#5
Ho deciso di utilizzare vb.net ho creato una macro che carica i dft tramite il codice ma faccio fatica a trovare i comandi di solid edge vorrei che aprisse i dft con le viste disattivate ma non so come di chiama il comando.
grazie.
 

BRM

Utente Standard
Professione: Disegnatore
Software: cocreate drafting,solid edge
Regione: Emilia Romagna
#7
Grazie della risposta vedo che funziona ma mi sembra che le viste vengano disattivate dopo l'apertura del dft.
io ho impostato nella finestra apri "disattiva viste di disegno durante la revisione" e quando apro un dft in modo classico ci mette poco tempo mentre se lo apro con la macro impiega un po' piu di tempo e mi dice che le viste non sono aggiornate e quindi presumo che vengano disattivate dopo l'apertura.
Penso che qualcosa non funziona come dovrebbe.
Grazie.
 

BRM

Utente Standard
Professione: Disegnatore
Software: cocreate drafting,solid edge
Regione: Emilia Romagna
#8
Salve a tutti ho creato una macro per caricare i dft e stamparli e vorrei inserire un testo nel cartiglio ma non riesco a capire quale comando si utilizza volevo utilizzare il comando richiamo senza la freccia ma non riesco a capire come funziona la sintassi dei comandi e come funzionano.
Grazie
 

vespa_83

Utente Standard
Professione: disegnatore
Software: Solid Edge
Regione: Romagna
#9
di solito si mette (a mano) sul template il Richiamo Testo che richiama una Proprietà personalizzata (es.: %{Descrizione} , %{Codice} , ...),
quindi via macro si cambia la Proprietà personalizzata, si aggiornano i testi e si stampa. (Per le Proprietà personalizzate posso aiutarti per aggiornare no).

Se invece come immagino hai già tanti disegni salvati senza il Richiamo casomai vuoi aggiungere il Richiamo.
Scrivimi il nome del comando che usi così faccio prima a trovarlo.

Che ambiente di sviluppo usi? vba di excel non va bene se vuoi leggere/settare la posizione del Baloon: restituisce un errore di compatibilità tipo di dati
 

delki

Utente Standard
Professione: Tecnical Support e Formazione su Solid Edge e SolidRules
Software: Solid Edge, Visual Basic .NET, SolidRules: InCentro, Desk, Configurator Manufactoring, Studio
Regione: Veneto
#10
Dentro le guide di Solid Edge c'é la Guida alla programmazione, no nè il massimo ma ci sono tutti i metodi disponibili, e degli esempi per i quali basta fare copia incolla.

Poi non si deve immaginare di avere a disposizione i "comandi" di Solid Edge, ma la programmazione agisce ad un livello leggermente più bassso, per spiegarmi è comse se ogni pulsante di Solid Edge richiamasse una piccola macro.

per inserire un richiamo in draft se non ricordo male devi cercare il metodo BALLOON, perché per Solid Edge richiami e pallini sono la stessa cosa, ma visualizzati in modo diverso.
 

BRM

Utente Standard
Professione: Disegnatore
Software: cocreate drafting,solid edge
Regione: Emilia Romagna
#11
Utilizzo visual basic 2008 express, pensavo di utilizzare il comando callout richiamo.
Ho provato a caricare qualche esempio dal manuale per i balloon ma non funziona non appare nulla.
Grazie
 

Be_on_edge

Moderatore
Staff Forum
Professione: Progettazione
Software: Solid Edge
Regione: Emilia Romagna
#12
Utilizzo visual basic 2008 express, pensavo di utilizzare il comando callout richiamo.
Ho provato a caricare qualche esempio dal manuale per i balloon ma non funziona non appare nulla.
Grazie
Se ci riporti la linea di codice che hai scritto e l'errore che ti da magari possiamo aiutarti.

Ciao
 

BRM

Utente Standard
Professione: Disegnatore
Software: cocreate drafting,solid edge
Regione: Emilia Romagna
#13
questo è l'esempio che ho provato

Module Module1
Sub Main()
Dim objApp As SolidEdgeFramework.Application
Dim objDoc As SolidEdgeDraft.DraftDocument
Dim objSheet As SolidEdgeDraft.Sheet
Dim objBalloons As SolidEdgeFrameworkSupport.Balloons
Dim objBalloon As SolidEdgeFrameworkSupport.Balloon
Dim objBItem As SolidEdgeFrameworkSupport.Balloon
' Report errors
'Const PI = 3.14159265358979
' Create/get the application with specific settings
'On Error Resume Next
objApp = GetObject(, "SolidEdge.Application")
'If Err() Then
'Err.Clear()
'objApp = CreateObject("SolidEdge.Application")
'objDoc = objApp.Documents.Add("SolidEdge.DraftDocument")
'objApp.Visible = True
'Else
objDoc = objApp.ActiveDocument
'End If
' getting the Active Sheet object
objSheet = objDoc.ActiveSheet
' getting the Balloons collection object on the active sheet
objBalloons = objSheet.Balloons
' adding a balloon on the active sheet
objBalloon = objBalloons.Add(x1:=0.25, y1:=0.25, z1:=0)
' getting another reference to the same balloon in the Balloons collection object
objBItem = objBalloons.Item("1")
' USER DISPLAY
' Release objects
objApp = Nothing
objDoc = Nothing
objSheet = Nothing
objBalloons = Nothing
objBalloon = Nothing
objBItem = Nothing
End Sub
End Module

Se ho capito bene dovrebbe disegnare un pallino con il numero 1 ma non fa nulla.
Grazie
 

Be_on_edge

Moderatore
Staff Forum
Professione: Progettazione
Software: Solid Edge
Regione: Emilia Romagna
#14
questo è l'esempio che ho provato

Module Module1
Sub Main()
Dim objApp As SolidEdgeFramework.Application
Dim objDoc As SolidEdgeDraft.DraftDocument
Dim objSheet As SolidEdgeDraft.Sheet
Dim objBalloons As SolidEdgeFrameworkSupport.Balloons
Dim objBalloon As SolidEdgeFrameworkSupport.Balloon
Dim objBItem As SolidEdgeFrameworkSupport.Balloon
' Report errors
'Const PI = 3.14159265358979
' Create/get the application with specific settings
'On Error Resume Next
objApp = GetObject(, "SolidEdge.Application")
'If Err() Then
'Err.Clear()
'objApp = CreateObject("SolidEdge.Application")
'objDoc = objApp.Documents.Add("SolidEdge.DraftDocument")
'objApp.Visible = True
'Else
objDoc = objApp.ActiveDocument
'End If
' getting the Active Sheet object
objSheet = objDoc.ActiveSheet
' getting the Balloons collection object on the active sheet
objBalloons = objSheet.Balloons
' adding a balloon on the active sheet
objBalloon = objBalloons.Add(x1:=0.25, y1:=0.25, z1:=0)
' getting another reference to the same balloon in the Balloons collection object
objBItem = objBalloons.Item("1")
' USER DISPLAY
' Release objects
objApp = Nothing
objDoc = Nothing
objSheet = Nothing
objBalloons = Nothing
objBalloon = Nothing
objBItem = Nothing
End Sub
End Module

Se ho capito bene dovrebbe disegnare un pallino con il numero 1 ma non fa nulla.
Grazie
Hai aggiunto i riferimenti alle librerie di Solid Edge ?

Così ad occhio poi mi sembra VB6 e non VB.NET, se hai office utilizza il VBA di excel per provare il codice.

Ciao
 

BRM

Utente Standard
Professione: Disegnatore
Software: cocreate drafting,solid edge
Regione: Emilia Romagna
#15
si è vb6 l'ho copiato in vb2008 express lo lancio e non mi da errori ma non fa nulla nel dft aperto.
 

BRM

Utente Standard
Professione: Disegnatore
Software: cocreate drafting,solid edge
Regione: Emilia Romagna
#16
ho provato anche con Excel ma non succede nulla
 

vespa_83

Utente Standard
Professione: disegnatore
Software: Solid Edge
Regione: Romagna
#18
prova questo (funziona su vba/excell)
diversamente dal tuo, ho rimesso "Set " davanti all'assegnazione degli oggetti.
il riferimento del richiamo che vuoi è eseguito durante la creazione del pallino.
Codice:
Sub testBaloon()
    Dim objApp As SolidEdgeFramework.Application
    Dim objDoc As SolidEdgeDraft.DraftDocument
    Dim objSheet As SolidEdgeDraft.Sheet
    Dim objBalloons As SolidEdgeFrameworkSupport.Balloons
    Dim objBItem As SolidEdgeFrameworkSupport.Balloon
    
    ' Report errors
    Const PI = 3.14159265358979
    ' Create/get the application with specific settings
    On Error Resume Next
    Set objApp = GetObject(, "SolidEdge.Application")
    If Err Then
        Err.Clear
        Set objApp = CreateObject("SolidEdge.Application")
        Set objDoc = objApp.Documents.Add("SolidEdge.DraftDocument")
        objApp.Visible = True
    Else
        Set objDoc = objApp.ActiveDocument
    End If
    ' getting the Active Sheet object
    Set objSheet = objDoc.ActiveSheet
    ' getting the Balloons collection object on the active sheet
    Set objBalloons = objSheet.Balloons
    ' adding a balloon on the active sheet
    Set objBItem = objBalloons.Add(X1:=0.025, Y1:=0.025, Z1:=0)
    objBItem.BalloonText = "ciao"
    
    ' USER DISPLAY
    ' Release objects
    Set objApp = Nothing
    Set objDoc = Nothing
    Set objSheet = Nothing
    Set objBalloons = Nothing
End Sub
 

vespa_83

Utente Standard
Professione: disegnatore
Software: Solid Edge
Regione: Romagna
#20
ps.: ho spostato che coordinate a 25;25 mm: ti può venire affogato nel cartiglio A4