Hi,
How to get postion of faces of part when place on idw drawing file???
Do we need to use (ThisApplication.MeasureTools.GetMinimumDistance(oTG.CreatePoint2d(0, 0), oFa.PointOnFace)????
If we use that we will get distance but how to get face postion on idw. do we need to use edges?? or lines???
Solved! Go to Solution.
Solved by ADNpati. Go to Solution.
Solved by ADNpati. Go to Solution.
I found way again by myself.....
Using ModelToSheetSpace with drawingview we can get reference to anything from Model i.e., 3D Enviroment to sheet space Enviroment.
working on code and will post you in 10 mins... cheers
Here is the complete code, hope this will be helpful for somebody
Option Explicit Sub FaceRecognitiononIDW() Dim oDrawingDoc As DrawingDocument Set oDrawingDoc = ThisApplication.ActiveDocument Dim oDef As ComponentDefinition Dim itemCnt As Integer itemCnt = 0 Dim oView As DrawingView Set oView = oDrawingDoc.ActiveSheet.DrawingViews(1) Dim oDoc As Document Set oDoc = oView.ReferencedDocumentDescriptor.ReferencedDocument Dim oPartDoc As Document Dim oRrubberPart As PartDocument Dim oAllRef As DocumentsEnumerator Dim occ As ComponentOccurrence Dim occDef As ComponentDefinition Dim oTextBox As TextBox Dim oPartCompDef As PartComponentDefinition Dim oSurfBody As SurfaceBody Dim oFa As face ' Set a reference to the active sheet. Dim oActiveSheet As Sheet Set oActiveSheet = oDrawingDoc.ActiveSheet For Each occ In oDoc.ComponentDefinition.occurrences If occ.DefinitionDocumentType = kPartDocumentObject Then If occ.SurfaceBodies.count <> 0 Then Set oPartDoc = occ.Definition.Document Set occDef = oPartDoc.ComponentDefinition Set oSurfBody = occDef.SurfaceBodies(1) Set oPartCompDef = occ.Definition For Each oFa In oSurfBody.Faces itemCnt = itemCnt + 1 If oFa.SurfaceType = kPlaneSurface Then ' Getting a planar surface face above ' ground level and face not connected ' to any other face If oFa.TangentiallyConnectedFaces.count = 0 Then If oFa.PointOnFace.Z <> "0" Then If ThisApplication.MeasureTools.GetAngle(oFa, occ.Definition.WorkPlanes(3)) = "0" Then Dim oFaProxy As FaceProxy Call occ.CreateGeometryProxy(oFa, oFaProxy) ' Get the point of the sketch Dim oMidPoint As Point2d Set oMidPoint = oView.ModelToSheetSpace(oFaProxy.PointOnFace) ' Set a reference to the TransientGeometry object. Dim oTG As TransientGeometry Set oTG = ThisApplication.TransientGeometry Dim oLeaderPoints As ObjectCollection Set oLeaderPoints = ThisApplication.TransientObjects.CreateObjectCollection ' Create a few leader points. Call oLeaderPoints.Add(oTG.CreatePoint2d(oMidPoint.x, oMidPoint.y)) Call oLeaderPoints.Add(oTG.CreatePoint2d(oMidPoint.x + 0.5, oMidPoint.y + 0.5)) ' Create text with simple string as input. Since this doesn't use ' any text overrides, it will default to the active text style. Dim sText As String sText = "API Leader Note" Dim oLeaderNote As LeaderNote Set oLeaderNote = oActiveSheet.DrawingNotes.LeaderNotes.Add(oLeaderPoints, sText) ' Insert a node. Dim oFirstNode As LeaderNode Set oFirstNode = oLeaderNote.Leader.RootNode.ChildNodes.Item(1) End If End If End If End If Next End If End If Next End Sub
If found useful give some kudos