AutoCAD¶þ´Î¿ª·¢(VBA) ÁªÏµ¿Í·þ

·¢²¼Ê±¼ä : ÐÇÆÚÈý ÎÄÕÂAutoCAD¶þ´Î¿ª·¢(VBA)¸üÐÂÍê±Ï¿ªÊ¼ÔĶÁde6e21086c85ec3a87c2c560

EllAxisScale = 0.6

Set ElliseObj = ThisDrawing.ModelSpace.AddEllipse(EllCenP, EllMajAxisP, _ EllAxisScale)

'¶¨ÒåÕóÁвÎÊý RotateP(0) = 300 RotateP(1) = 40 RotateP(2) = 0 ArrayNumber = 10 ArrayAngle = 4.71

ArrayResult = ElliseObj.ArrayPolar(ArrayNumber, ArrayAngle, RotateP) 2.¾ØÐÎÕóÁÐ

Òª´´½¨¶þά¾ØÐÎÕóÁУ¬ÐèҪʹÓöÔÏóÌṩµÄArrayRectangular·½·¨¡£Õâ¸ö·½·¨ÐèÒªÌṩ4¸ö²ÎÊý£ºÁÐÊý¡¢ÐÐÊý¡¢ÐоàºÍÁоࡣÈç¹ûÁмä¾àΪÕýÖµ£¬ÔòÕóÁÐʱ¶ÔÏóÑØXÖáÕýÏòÅÅÁлæÖÆ£»Îª¸ºÖµÔòÕóÁÐʱ¶ÔÏóÑØXÖḺÏòÅÅÁлæÖÆ¡£Èç¹ûÐмä¾àΪÕýÖµ£¬ÔòÕóÁÐʱ¶ÔÏóÑØYÖáÕýÏòÅÅÁлæÖÆ£»Îª¸ºÖµÔòÕóÁÐʱ¶ÔÏóÑØYÖḺÏòÅÅÁлæÖÆ¡£

¾ØÐÎÕóÁеÄÁкÍÐÐ×ÜÊÇÓë×ø±êÖá³ÉÕý½»µÄ£¬Ò²¼´Îª90¡ã¼Ð½Ç¡£¿ÉÒÔͨ¹ýSnapRotationangleÊôÐÔÀ´ÉèÖþØÐÎÕóÁеÄÇãб½Ç£¬¸ÃÊôÐÔÉèÖõĽǶÈͬʱҲÊDz¶×½µãµÄÐýת½Ç¶È¡£µ±Õâ¸ö½Ç¶È·Ç0Öµ£¬¾Í¿ÉÒÔ´´½¨ÇãбµÄ¾ØÐÎÕóÁÐÁË¡£

ÏÂÃæµÄ³ÌÐòÏÈ´´½¨Ò»¸öÎå½ÇÐÇ£¬È»ºóÔÙ¶ÔÎå½ÇÐǽøÐоØÐÎÕóÁУ¬´´½¨5¡Á4¹²20¸öÎå½ÇÐÇ¡£

Dim PolyLineObj As AcadLWPolyline Dim PolyLineP(0 To 21) As Double Dim ArrayRows As Integer Dim ArrayCols As Integer Dim ArrayRowDis As Double Dim ArrayColDis As Double Dim arrayResult As Variant Dim LevelDis As Double Dim Levels As Integer '¶¨ÒåÎå½ÇÐÇ

PolyLineP(0) = 0: PolyLineP(1) = 0

PolyLineP(2) = 41.678: PolyLineP(3) = 30.2808 PolyLineP(4) = 83.356: PolyLineP(5) = 0

PolyLineP(6) = 67.4364: PolyLineP(7) = 48.9954 PolyLineP(8) = 109.1144: PolyLineP(9) = 79.2763 PolyLineP(10) = 57.5976: PolyLineP(11) = 79.2763 PolyLineP(12) = 41.678: PolyLineP(13) = 128.2717 PolyLineP(14) = 25.7854: PolyLineP(15) = 79.2763 PolyLineP(16) = 25.7584: PolyLineP(17) = 79.2763 PolyLineP(18) = -25.7584: PolyLineP(19) = 79.2763 PolyLineP(20) = 15.9196: PolyLineP(21) = 48.995

Set PolyLineObj = ThisDrawing.ModelSpace.AddLightWeightPolyline(PolyLineP) PolyLineObj.Closed = True '¶¨ÒåÕóÁвÎÊý

ArrayRows = 5 ArrayCols = 4 Levels = 1

ArrayRowDis = 150 ArrayColDis = 250 LevelDis = 0 '´´½¨ÕóÁÐ

arrayResult = PolyLineObj.ArrayRectangular(ArrayRows, ArrayCols, Levels, _ ArrayRowDis, ArrayColDis, LevelDis) 14.4.8.4Ðýת¶ÔÏó

VBA³ÌÐò¿ÉÒÔ½«ËùÓеÄͼÐζÔÏó¼°ÆäÊôÐԲο¼ÈÆÖ¸¶¨µÄ»ùµãÐýת£¬¸Ä±ä¶ÔÏóµÄ·½Î»£¬µ«²»¸Ä±äÆä´óС¡£ÒªÐýת¶ÔÏóÐèҪʹÓøöÔÏóÌṩµÄRotate·½·¨¡£Õâ¸ö·½·¨ÐèÒªÊäÈëÒ»¸ö»ùµãºÍÒ»¸öÐýת½Ç¶È×÷Ϊ²ÎÊý¡£ÆäÖлùµãÊÇÒ»¸ö¾ßÓÐÈý¸öµ¥¾«¶ÈµÄ±äÌåÊý¾Ý£¬Ðýת½Ç¶È²ÎÊýµÄµ¥Î»Îª»¡¶È£¬´Ë½Ç¶ÈÖ¸¶¨¶ÔÏóÈÆ»ùµãÐýת¹ýµÄ½Ç¶È£¬Ò²¾ÍÊÇÏà¶ÔÓÚµ±Ç°Î»ÖÃÐýתµÄ¾àÀë¡£ÏÂÃæµÄ³ÌÐòÏÈ´´½¨Ò»¸ö´óÔ²¼°»ùÖÐÐÄÏߣ¬ÔÙÒÔ¸ÃÔ²µÄµÚÒ»ÏóÏÞµãΪԲÐÄ»æÖÆÒ»¸öСԲ¡£È»ºó¸´ÖƳöһˮƽÖÐÐÄÏߣ¬×îºó½«Ð¡Ô²ºÍ¸´ÖƳöµÄÖÐÐÄÏßÈÆ´óÔ²Ô²ÐÄÐýת30¡ã¡£

Dim CircleBig As AcadCircle Dim CircleLit As AcadCircle Dim CenBigP(0 To 2) As Double Dim CenLitP(0 To 2) As Double Dim RBig As Double Dim RLit As Double

Dim CenterLineH As AcadLine Dim CenterLineV As AcadLine

Dim CenLineHP1(0 To 2) As Double Dim CenLineHP2(0 To 2) As Double Dim CenLineVP1(0 To 2) As Double Dim CenLineVP2(0 To 2) As Double Dim CenterLineHCopy As AcadLine Dim RotateAngle As Double CenBigP(0) = 50 CenBigP(1) = 50 CenBigP(2) = 0 RBig = 15

CenLitP(0) = 65 CenLitP(1) = 50 CenLitP(2) = 0 RLit = 3

CenLineHP1(0) = 30 CenLineHP1(1) = 50 CenLineHP1(2) = 0 CenLineHP2(0) = 70 CenLineHP2(1) = 50 CenLineHP2(2) = 0

CenLineVP1(0) = 50 CenLineVP1(1) = 30 CenLineVP1(2) = 0 CenLineVP2(0) = 50 CenLineVP2(1) = 70 CenLineVP2(2) = 0

ThisDrawing.Linetypes.Load \

ThisDrawing.ActiveLinetype = ThisDrawing.Linetypes.Item(\Set CircleBig = ThisDrawing.ModelSpace.AddCircle(CenBigP, RBig) Set CircleLit = ThisDrawing.ModelSpace.AddCircle(CenLitP, RLit)

Set CenterLineH = ThisDrawing.ModelSpace.AddLine(CenLineHP1, CenLineHP2) Set centerlinv = ThisDrawing.ModelSpace.AddLine(CenLineVP1, CenLineVP2) CenterLineH.Linetype = \CenterLineV.Linetype = \CenterLineH.LinetypeScale = 3 CenterLineV.LinetypeScale = 3 RotateAngle = 0.5236

Set CenterLineHCopy = CenterLineH.Copy CenterLineHCopy.Rotate CenBigP, RotateAngle CircleLit.Rotate CenBigP, RotateAngle 14.4.8.5ɾ³ý¶ÔÏó

ÏÂÃæµÄ³ÌÐòÊÇÏÈ´´½¨Ò»¸öÖ±Ïߣ¬È»ºó½«Æäɾ³ý¡£

Dim LinObj As AcadLine Dim SP(0 To 2) As Double Dim EP(0 To 2) As Double SP(0) = 0 SP(1) = 0 SP(2) = 0 EP(0) = 500 EP(1) = 0 EP(2) = 0

Set LinObj = ThisDrawing.ModelSpace.AddLine(SP, EP)

LinObj.Delete

´ÓÉÏÃæµÄ³ÌÐò´úÂëÖпÉÒÔ¿´µ½£¬É¾³ý¶ÔÏóÐèÒªÓõ½¶ÔÏóµÄDelete·½·¨¡£ÔÚActiveX AutomationÖеÄCollection¶ÔÏóÖУ¬ÓÐЩ¶ÔÏ󼯺ÏÊDz»ÌṩDelete·½·¨µÄ¡£ÀýÈ磬ModelSpace¼¯ºÏ¡¢Layers¼¯ºÏºÍDictionaries¼¯ºÏ²»Äܱ»É¾³ý¡£Èç¹ûÊÔͼɾ³ýÕâЩ¶ÔÏó£¬Ôò»á²úÉú´íÎó¡£

14.4.9×é֯ͼÐÎÔªËØ

Óû§Ëù´´½¨µÄ¶ÔÏ󶼰üÀ¨Í¼²ã¡¢ÑÕÉ«ºÍÏßÐÍÈý¸ö±ê×¼ÊôÐÔ¡£Í¼²ã¾ÍÊÇ͸Ã÷µÄͼֽ£¬¿ÉÒÔÔÚ²»Í¬µÄ²ãÉÏÃæ»æÖƲ»Í¬¸÷ÀàµÄͼÐζÔÏó£»ÑÕÉ«¿ÉÒÔ°ïÖúÓû§Ö±¹ÛµØÇø·ÖͼÐÎÖв»Í¬ÖÖÀàµÄÔªËØ£»ÏßÐÍÔò¿ÉÒÔ°ïÖúÓû§ÒÀ±ê×¼Çø·Ö²»Í¬µÄͼÐÎÔªËØ¡£ 14.4.9.1ͼ²ã

1.²éÕÒͼ²ã

ÔÚAutoCADͼÐζÔÏóÖУ¬ËùÓеÄͼ²ãºÍÏßÐ;ù±£´æÔÚÆäÉϼ¶¶ÔÏó£¨Í¼ÐΣ©ÖУ¬ÆäÖÐͼ²ã±£´æÔÚLayers¼¯ºÏÄÚ£¬²éÕÒͼ²ãÒª´ÓLayers¼¯ºÏÖÐË÷Òý¡£¿ÉÒÔ±éÀúLayers¼¯ºÏ£¬ÓÃFor EachÓï¾ä²éѯ³öͼÐÎÖеÄËùÓÐͼ²ãºÍÏßÐÍ¡£ÏÂÃæµÄ³ÌÐò´úÂë±éÀúÕû¸öLayers¼¯ºÏ£¬²éѯͼÐÎÖÐËùÓÐͼ²ãÃû³Æ£¬È»ºóÔÚÐÅÏ¢¶Ô»°¿òÖÐÏÔʾ¸÷ͼ²ãµÄÃû³Æ¡£

Dim AllLayerNames As String Dim EntryObj As AcadLayer AllLayerNames = \

For Each EntryObj In ThisDrawing.Layers

AllLayerNames = AllLayerNames + EntryObj.Name + vbCrLf Next

MsgBox \±¾Í¼ÐεÄͼ²ãÓУº\2.´´½¨Í¼²ã

AutoCADͼÐÎÖеÄÿһ¸öͼ²ã¶¼ÊÇLayers¼¯ºÏÖеÄÒ»¸ö¶ÔÏó£¬ÔÚVBA³ÌÐòÖд´½¨ÐÂͼ²ãÐèҪʹÓÃAdd·½·¨¡£¸Ã·½·¨ÐèÒªÒ»¸ö²ÎÊý£¬¸Ã²ÎÊýΪд´½¨µÄͼ²ãÃû³Æ¡£Í¼²ãÃû³Æ×¿ÉÒÔÓÐ31¸ö×Ö·û£¬°üº¬×Öĸ¡¢Êý×ÖºÍÌØÊâ×Ö·û£¬µ«²»ÄÜ°üº¬¿Õ¸ñ¡£Í¼²ã´´½¨Ö®ºó£¬¿ÉÒÔÐÞ¸Äͼ²ãµÄÃû³Æ£¬ÕâÐèҪʹÓøÃͼ²ãµÄNameÊôÐÔ£¬½«¸ÃÊôÐÔÖµÉèÖÃΪÐèÒªµÄÃû³Æ×Ö·û¼´¿É¡£Í¼²ã´´½¨ÒԺ󣬿ÉÒÔͨ¹ýͼ²ãµÄColorÊôÐÔºÍLinetypeÊôÐÔÀ´ÉèÖÃͼ²ãÉϵÄÑÕÉ«ºÍÏßÐÍ¡£ÏÂÃæµÄ³ÌÐòÏÈ´´½¨Ò»¸öÔ²ºÍÒ»¸öͼ²ã£¬ÐÂͼ²ãʹÓúìÉ«ºÍÐéÏßÏßÐÍ¡£È»ºó½«Ô²Ö¸¶¨µ½¸Ãͼ²ãÉÏ£¬Ô²µÄÑÕÉ«ºÍÏßÐÍÊôÐÔÒ²¸ú×ÅÐ޸ġ£

Dim CircleObj As AcadCircle Dim CenP(0 To 2) As Double CenP(0) = 0 CenP(1) = 0 CenP(2) = 0

Dim R As Double R = 50

Set CircleObj = ThisDrawing.ModelSpace.AddCircle(CenP, R) CircleObj.color = acByLayer

'Ô²ÑÕɫΪ¡°ByLayer¡±,ʹÓÃͼ²ãÑÕÉ« Dim NewLayerObj As AcadLayer

Set NewLayerObj = ThisDrawing.Layers.Add(\ÐÂͼ²ã\NewLayerObj.color = acRed

NewLayerObj.Linetype = \CircleObj.Layer = \ÐÂͼ²ã\CircleObj.Update 3.Çл»Í¼²ã

µ±ÐèÒªÔÚÁíÒ»¸öͼ²ãÉÏ»æͼʱ£¬ÐèÒªÏÈÇл»µ½¸Ãͼ²ã£¬Ò²¾ÍÊÇÉèÖõ±Ç°Í¼²ã£¬²Å¿ÉÒÔÔÚ¸Ãͼ²ãÉÏ´´½¨ÐµĶÔÏó¡£Èç¹ûÒ»¸öͼ²ãÒѾ­±»¶³½á£¬Ôò²»ÄÜÉèÖÃËü³ÉΪµ±Ç°Í¼²ã¡£Èç¹ûÇл»Í¼²ã£¬ÐèҪʹÓÃͼÐζÔÏóµÄActiveLayerÊôÐÔ£¬¸ÃÊôÐÔÓÃÓÚÉèÖõ±Ç°Í¼ÐΡ£ÀýÈ磺

ThisDrawing.ActiveLayer = \ͼ²ã1\ÊÇ°Ñ¡°Í¼²ã1¡±ÉèÖÃΪµ±Ç°Í¼²ã¡£

4.´ò¿ªºÍ¹Ø±Õͼ²ã

´ò¿ªºÍ¹Ø±Õͼ²ã£¬ÐèҪʹÓÃͼ²ã¶ÔÏóµÄLayerOnÊôÐÔ¡£Èç¹û½«´ËÊôÐÔÉèÖÃΪTrue£¬¸Ãͼ²ã»á±»´ò¿ª£»Èç¹ûÉèÖÃΪFalse£¬Ôòͼ²ã±»¹Ø±Õ¡£