2013-07-29 3 views
0

저는 AutoCAD 용 VBA 프로그래밍을하고 있지만 현재까지는 VB.NET에서 라인을 작성하거나 삽입하는 방법을 찾을 수 없습니다.VB.NET을 사용하여 AutoCAD * .dxf 드로잉을 삽입하거나 생성하는 방법은 무엇입니까?

VB.NET에는 acad 파일을 사용하는 두 가지 개념이 있습니다.

  1. 사용 : AcApplication.DocumentManager.MdiActiveDocument;

  2. 하나 이상의 파일에 대한 트랜잭션으로 폴더의 모든 파일이 데이터베이스로 선언되고 블록 테이블과 수정 사항이 트랜잭션으로 선언되므로 어쩌면 컨셉에는 약간의 상실감이 생길 수 있습니다. VB.NET

난은 VB.NET에 선 또는 원을 만들고 내가 그림을 많이 수정해야하기 때문에 데이터베이스와 개념 (2)를 사용하여 DXF 도면에 삽입하는 방법의 샘플이 필요합니다. 당신의 도움이

답변

0

시작하기에 좋은 장소

For Each Filedxf As IO.FileInfo In Modfiles 
Try 
    Change = False 
    Dim MyDB As New Database(False, True) 
    MyDB.DxfIn(Filedxf.FullName.ToString, IO.Path.Combine(PathToChange, "dxf.log")) 
    Using MyTrans As Transaction = MyDB.TransactionManager.StartTransaction 
     Dim MyBT As BlockTable = MyDB.BlockTableId.GetObject(OpenMode.ForRead) 
     For Each MyBTRId As ObjectId In MyBT 
      Dim MyBTR As BlockTableRecord = MyBTRId.GetObject(OpenMode.ForRead) 
      For Each cadID As ObjectId In MyBTR 
       Select Case cadID.ObjectClass.DxfName.ToUpper 
        Case "TEXT" 
         Dim MyText As DBText = cadID.GetObject(OpenMode.ForWrite) 
         Select Case MyText.Layer.ToUpper 

고마워요 여기 modelspace에 선을 삽입

http://exchange.autodesk.com/autocad/enu/online-help/browse

구글이다. 레이어 속성을 변경하고 transaction.GetObject()

그게 당신에게 좋은 시작 줄 것이다.

0

AutoCAD interop은 새 ObjectARX dll을 참조하여 액세스 할 수 있습니다. 선 그리기, 블록 추가 또는 다른 AutoCAD 기능에 대한 코드는 지난 몇 년 동안 크게 변하지 않았습니다.

당신이 VB에서 할 수있는 일의 일부는 :

자세한 정보는 AutoCAD Developer Guide

에서 찾을 수 있습니다
Imports Autodesk.AutoCAD.Interop 
Imports AutoCAD 

'drawing lines 
'Set start point x:y:z coordinates 
Dim sPoint(2) As Double 'Declare start point 
sPoint(0) = X1 : sPoint(1) = Y1 : sPoint(2) = Z1 
'Set end point x:y:z coordinate 
ePoint(0) = X2 : ePoint(1) = Y2 : ePoint(2) = Z2 


'Drawing lines 
temp = ThisDrawing.ModelSpace.AddLine(sPoint, ePoint) 
'changing layer for new object 
temp.Layer = "LONGDASH" 

'setting layer 
ThisDrawing.ActiveLayer = ThisDrawing.Layers.Item(11) 

' Adding blocks 
Dim dblRotate As Double 

Dim temp As AcadBlockReference 
'Call Block_Detector(blockName) 
'convert rotation to radians 
dblRotate = ThisDrawing.Utility.AngleToReal(CStr(dblRotation), AcAngleUnits.acDegrees) '* 3.141592/180# 

sPoint(0) = X 'Set start point x coordinate 
sPoint(1) = Y 'Set start point y coordinate 
sPoint(2) = Z 'Set start point z coordinate 

'Set temp = ThisDrawing.Blocks.Add(sPoint, blockName) 
temp = ThisDrawing.ModelSpace.InsertBlock(sPoint, blockName, 1, 1, 1, dblRotate)