Communauté
Inventor - Français
Bienvenue sur les forums Inventor d’Autodesk. Partagez vos connaissances, posez des questions, collaborez sur des idées, et explorez les sujets Inventor populaires.
annuler
Affichage des résultats de 
Afficher  uniquement  | Rechercher plutôt 
Vouliez-vous dire : 

Inventor : Demarage de regle i-logic.

6 RÉPONSES 6
RÉSOLU
Répondre
Message 1 sur 7
denis.semeniuc
335 Visites, 6 Réponses

Inventor : Demarage de regle i-logic.

Bonjour,

 

J'ai 2 regle externe i-logique .

La #1 demare la creation de dessin multipage de tous les composantes d'un assamblage ouverte.

La #2 fait la menage dans dessin ouverte (incertion de symbole, incertion de part liste etc.).

Evidement que chaque peut marche juste dans son enviroment de travail (assamblage - #1 ou dessin - #2)

Este-ce que il y a une possibilite de demarer automatiqement la regle #2 apres que #1 est fini.

 

Merci.


Le titre du sujet a été modifié par un modérateur pour faciliter la recherche. Titre original:
Demarage de regle i-logic.

6 RÉPONSES 6
Message 2 sur 7
ThomasB44
en réponse à: denis.semeniuc

Salut @denis.semeniuc 

Créer une nouvelle règle avec :

iLogicVb.RunExternalRule("ruleFileName1")
iLogicVb.RunExternalRule("ruleFileName2")

Qui permettra de lancer les 2, l'une après l'autre.


Thomas
Mechanical Designer / Inventor Professionnal 2023
Inventor Professional EESignature

Message 3 sur 7
denis.semeniuc
en réponse à: ThomasB44

ca marche pas.
acause que la regle est activer sur assamblage. Apres finilisation d'execution de la regle #1 une message dise que la regle ne peux pas s'execute sur assamblage. C'est logique... parce que elle est didier a un dessin.

Il faut activer le dessin avant executer la regle #2. Cette partie que je ne sait pas comment faire.

Merci
Message 4 sur 7
ThomasB44
en réponse à: denis.semeniuc

Ta règle #1 commence depuis un assemblage, ok.

Ta règle #2 doit elle aussi commencer depuis cet assemblage,

Ou bien, elle doit permettre de retrouver le dessin associé à cet assemblage et l'ouvrir, si le document actif est un assemblage. Et d'en faire le document actif pour la suite de ta règle.

Je ne connais pas tes codes, mais c'est juste un problème de déclaration du document actif au lancement de la règle je pense.


Thomas
Mechanical Designer / Inventor Professionnal 2023
Inventor Professional EESignature

Message 5 sur 7
denis.semeniuc
en réponse à: ThomasB44

Exactement ca que je ne reuci pas a faire.

 

Selon moi il faut activer le dessin a la fin de la regle #1. Maleresement je ne par reuci. Pouvez vous aide???

 

Voici la code:

 

Private Sub Main
CreateDrawingsFromAssembly(ThisDoc.Document)

End Sub

Private Sub CreateDrawingsFromAssembly(ByVal oDoc As Inventor.Document)
	'change the following to switch modes:
	Dim createSingleDrawing As Boolean = True
	
	Dim oDrawingDoc As DrawingDocument	   
	'Dim oPartDoc As Document
	
	TemplateFileName="L:\001\Q2020\Inventor\Templates\Procede_equip\PE-Dessin (FR).idw"

	Dim oSheet As Sheet
	

	dwgQuery=MsgBox("Would you like to Create drawings from this Assembly?", vbYesNo,"Drawing Selection")
	
	If dwgQuery = vbYes Then
		Dim oAssy As Inventor.AssemblyDocument
    	Dim oComp As Inventor.ComponentOccurrence
    	Dim oSubDoc As Inventor.Document

    	Dim NodeName() As String
	    Dim InstNum As String

		If oDoc.DocumentType = Inventor.DocumentTypeEnum.kAssemblyDocumentObject Then
			oAssy = CType(oDoc, AssemblyDocument)

			If createSingleDrawing Then
				oDrawingDoc = ThisApplication.Documents.Add(DocumentTypeEnum.kDrawingDocumentObject, TemplateFileName, CreateVisible:= True)
				oSheet = oDrawingDoc.Sheets.Item(1)
				
				CreateFirstSheet(oSheet, oAssy)
				'oSheet.Name = IO.Path.GetFileNameWithoutExtension( oAssy.FullFileName)
			End If
			
'Drawings for sub-assemblies
	    For Each refDoc As Document In oAssy.AllReferencedDocuments
	     If refDoc.DocumentType <> DocumentTypeEnum.kAssemblyDocumentObject Then Continue For
				
'			For Each refDoc As Document In oAssy.AllReferencedDocuments
'				If refDoc.FullFileName.Contains("Content Center") Then Continue For
					
				'Define dwg Template File Location
				
				If Not createSingleDrawing Then
					oDrawingDoc = ThisApplication.Documents.Add(DocumentTypeEnum.kDrawingDocumentObject, TemplateFileName, CreateVisible:= True)
					oSheet = oDrawingDoc.Sheets.Item(1)
				Else
					'Break 'turned off after debugging.
					If oDrawingDoc.Sheets.Count >= 1 Then
						
'		
			oSheet = oDrawingDoc.Sheets.Add()'(size, Orientation)
			oSheet.AddDefaultBorder()
			   
    			CreateSecondSheet(oSheet, refDoc)
					End If
				
				
				'oSheet.Name = IO.Path.GetFileNameWithoutExtension( refDoc.FullFileName)
				End If
		
			Next
	  
		End If
	End If
End Sub

Private Sub CreateAssemblyDrawing(oAsmDoc As _Document, templateFile As String)

    'Create and activate new drawing
    Dim oDrawingDoc As DrawingDocument = ThisApplication.Documents.Add(DocumentTypeEnum.kDrawingDocumentObject,templateFile, True )

    oDrawingDoc.Activate()

    'Create sheets
    Dim numberOfSheets = 1
    'For sheetNumber As Integer = 1 To numberOfSheets
      '  If oDrawingDoc.Sheets.Count < sheetNumber Then
            Dim size As DrawingSheetSizeEnum = DrawingSheetSizeEnum.kA4DrawingSheetSize
            Dim orientation = PageOrientationTypeEnum.kPortraitPageOrientation

            Dim oSheet = oDrawingDoc.Sheets.Add(size, orientation)
            'TODO: Add title block, border etc.

     '   End If
    'Next

    'Get first sheet
    Dim firstSheet As Sheet = oDrawingDoc.Sheets.Item(1)
    CreateFirstSheet(firstSheet, oAsmDoc)

    'Get second sheet
'    Dim secondSheet As Sheet = oDrawingDoc.Sheets.Item(2)
'    CreateSecondSheet(secondSheet, oAsmDoc)

    'And so on...
End Sub

Private Sub CreateFirstSheet(oSheet As Sheet, oAssy As _Document)
    
	'Implement you own layout for first sheet
Dim ViewScale As Double = 1/30

    'Create isometric view
    Dim isoViewPosition As Point2d = ThisApplication.TransientGeometry.CreatePoint2d(oSheet.Width / 1.25,oSheet.Height / 3)
    Dim isoView = oSheet.DrawingViews.AddBaseView(oAssy,isoViewPosition,ViewScale ,ViewOrientationTypeEnum.kIsoTopRightViewOrientation,DrawingViewStyleEnum.kShadedDrawingViewStyle)
'kIsoTopRightViewOrientation
   
   'Create Front View
'    Dim frontViewPosition As Point2d = ThisApplication.TransientGeometry.CreatePoint2d(oSheet.Width / 4,oSheet.Height / 1.25)
'    Dim frontView = oSheet.DrawingViews.AddBaseView(oAssy,frontViewPosition,ViewScale , ViewOrientationTypeEnum.kFrontViewOrientation,DrawingViewStyleEnum.kHiddenLineRemovedDrawingViewStyle )
	
	'Create Top View
    Dim TopViewPosition As Point2d = ThisApplication.TransientGeometry.CreatePoint2d(oSheet.Width / 4,oSheet.Height / 1.25)
    Dim TopView = oSheet.DrawingViews.AddBaseView(oAssy,TopViewPosition,ViewScale , ViewOrientationTypeEnum.kTopViewOrientation,DrawingViewStyleEnum.kHiddenLineRemovedDrawingViewStyle )

    'NOT USED
    'Dim V3Point2D As Point2d = ThisApplication.TransientGeometry.CreatePoint2d(frontView.Center.X - 10, frontView.Center.Y)

    'Get top view initial position
    'Dim topViewPosition As Point2d = ThisApplication.TransientGeometry.CreatePoint2d(frontView.Center.X, frontView.Center.Y + 10)
'    Dim topViewPosition As Point2d = frontView.Center.Copy()
'    topViewPosition.Y += 10

'    'Create top (projected) view
'    Dim topView As DrawingView = oSheet.DrawingViews.AddProjectedView(frontView,topViewPosition,DrawingViewStyleEnum.kFromBaseDrawingViewStyle)

    'Move top view to final position
'    Dim oSep As Double = 1 'NOT DECLARED
'    TopViewPosition.Y = frontView.Center.Y - frontView.Height / 2 - oSep - TopView.Height / 2
'    TopView.Position = TopViewPosition
	
	
End Sub

Private Sub CreateSecondSheet(oSheet As Sheet, refDoc As _Document)
    'Implement you own layout for Second sheet
	Dim ViewScale As Double = 1/30
    'Create isometric view
    Dim isoViewPosition As Point2d = ThisApplication.TransientGeometry.CreatePoint2d(oSheet.Width / 1.25,oSheet.Height / 3)
    Dim isoView = oSheet.DrawingViews.AddBaseView(refDoc,isoViewPosition,ViewScale,ViewOrientationTypeEnum.kIsoTopRightViewOrientation,DrawingViewStyleEnum.kShadedDrawingViewStyle)

'    'Create Front View
'    Dim frontViewPosition As Point2d = ThisApplication.TransientGeometry.CreatePoint2d(oSheet.Width / 4,oSheet.Height / 1.25)
'    Dim frontView = oSheet.DrawingViews.AddBaseView(refDoc,frontViewPosition,ViewScale, ViewOrientationTypeEnum.kFrontViewOrientation,DrawingViewStyleEnum.kHiddenLineRemovedDrawingViewStyle )

	'Create Top View
    Dim TopViewPosition As Point2d = ThisApplication.TransientGeometry.CreatePoint2d(oSheet.Width / 4,oSheet.Height / 1.25)
    Dim TopView = oSheet.DrawingViews.AddBaseView(refDoc,TopViewPosition,ViewScale , ViewOrientationTypeEnum.kTopViewOrientation,DrawingViewStyleEnum.kHiddenLineRemovedDrawingViewStyle )

    'NOT USED
    'Dim V3Point2D As Point2d = ThisApplication.TransientGeometry.CreatePoint2d(frontView.Center.X - 10, frontView.Center.Y)

    'Get top view initial position
    'Dim topViewPosition As Point2d = ThisApplication.TransientGeometry.CreatePoint2d(frontView.Center.X, frontView.Center.Y + 10)
'    Dim topViewPosition As Point2d = frontView.Center.Copy()
'    topViewPosition.Y += 10

'    'Create top (projected) view
'    Dim topView As DrawingView = oSheet.DrawingViews.AddProjectedView(frontView,topViewPosition,DrawingViewStyleEnum.kFromBaseDrawingViewStyle)

'    'Move top view to final position
'    Dim oSep As Double = 1 'NOT DECLARED
'    topViewPosition.Y = frontView.Center.Y - frontView.Height / 2 - oSep - topView.Height / 2
'    topView.Position = topViewPosition
End Sub

 

Message 6 sur 7
ThomasB44
en réponse à: denis.semeniuc

Salut @denis.semeniuc 

Et bien par exemple au début de ta règle tu fais :

Private Sub Main
CreateDrawingsFromAssembly(ThisDoc.Document)

La suite de ton code créé un seul dessin si j'ai bien lu...et un certain nombre de feuilles en fonction de ce que contient l'assemblage. Tu créés bien un dessin dans l'application et tu actives ce dessin.

Le dessin n'est pas enregistré, mais peu importe, à la fin de ton code il s'agit du document actif dans ton application.

 

Tu peux donc poursuivre ton "Main" par :

Dim oDwgDoc As Inventor.DrawingDocument
oDwgDoc = ThisApplication.ActiveDocument
MsgBox(oDwgDoc.Sheets.Count)

"oDwgDoc" devient donc ton document de dessin pour poursuivre avec ta règle #2


Thomas
Mechanical Designer / Inventor Professionnal 2023
Inventor Professional EESignature

Message 7 sur 7
denis.semeniuc
en réponse à: ThomasB44

Merci, ca marche.

Vous n'avez pas trouvé ce que vous recherchiez ? Posez une question à la communauté ou partagez vos connaissances.

Publier dans les forums  

Autodesk Design & Make Report