找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 408|回复: 2

[求助]:关于如何交互绘制ployline的问题

[复制链接]
发表于 2003-11-17 11:09:38 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
请问各位,如何通过getpoint命令来绘制polyline,下面是我绘制line的程序,想同样实现绘制ployline,但无法实现,请高手指点。
Sub sdl()
Dim entry As AcadLineType
    Dim found As Boolean
    found = False
    For Each entry In ThisDrawing.Linetypes
        If StrComp(entry.Name, "acad_iso05w100", 1) = 0 Then
            found = True
            Exit For
        End If
    Next
    If Not (found) Then ThisDrawing.Linetypes.Load "acad_iso05w100", "acadiso.lin"
Dim pt1 As Variant
Dim pt2 As Variant
Dim line3 As AcadLine
pt1 = ThisDrawing.Utility.GetPoint(, "起点")
10:
On Error GoTo 20
pt2 = ThisDrawing.Utility.GetPoint(pt1, "下一点")
Set line3 = ThisDrawing.ModelSpace.AddLine(pt1, pt2)
Dim lcx As AcadLayer
Set lcx = ThisDrawing.Layers.add("虚线层")
lcx.Color = acCyan
lcx.linetype = "acad_iso05w100"
line3.Layer = "虚线层"
'line3.linetype = "acad_iso04w100"
pt1 = pt2
GoTo 10
20: Exit Sub
End Sub
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
发表于 2003-11-20 06:43:58 | 显示全部楼层
REFER TO THIS CODE:

'Begin Code Block
Option Explicit

Public Const VK_ESCAPE = &H1B
Declare Function GetAsyncKeyState Lib "user32" (ByVal vKey As Long) As Integer
Public Sub DrawPline()
  Dim strPrompt As String
  Dim varPnt As Variant
  Static objPLine As AcadPolyline
  Static dblStrPnt(0 To 2) As Double
  Static varVertList(0 To 5) As Double
  Dim intNoPnts As Integer
  Dim KeyWords As String
  KeyWords = "Arc Close Length" 'not used, yet!
  strPrompt = "Specify Start Point: "
  On Error GoTo ErrControl
  ThisDrawing.Utility.InitializeUserInput 36, KeyWords
  varPnt = ThisDrawing.Utility.GetPoint(Prompt:=strPrompt)
  Do
    If intNoPnts = 0 Then
      varVertList(0) = varPnt(0)
      varVertList(1) = varPnt(1)
      varVertList(2) = varPnt(2)
      intNoPnts = intNoPnts + 1
    ElseIf intNoPnts = 1 Then
      varVertList(3) = varPnt(0)
      varVertList(4) = varPnt(1)
      varVertList(5) = varPnt(2)
      Set objPLine = ThisDrawing.ModelSpace.AddPolyline(varVertList)
      ThisDrawing.Application.Update
      intNoPnts = intNoPnts + 1
    Else
      dblStrPnt(0) = varPnt(0)
      dblStrPnt(1) = varPnt(1)
      dblStrPnt(2) = varPnt(2)
      intNoPnts = intNoPnts + 1
      objPLine.AppendVertex dblStrPnt
      ThisDrawing.Application.Update
    End If
    strPrompt = "Specify next point: "
    varPnt = ThisDrawing.Utility.GetPoint(varPnt, strPrompt)
  Loop
Exit_Here:
  Exit Sub
ErrControl:
  If CheckKey(VK_ESCAPE) Then
    Resume Exit_Here
  ElseIf Err.Description = "User input is a keyword" Then
    'Nothing yet!
    Resume Exit_Here
  Else
    MsgBox Err.Description, vbOKOnly, "Llama Control Center"
  End If
End Sub

Function CheckKey(lngKey As Long) As Boolean
  If GetAsyncKeyState(lngKey) Then
    CheckKey = True
  Else
    CheckKey = False
  End If
End Function
'End Code Block
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2003-11-20 18:55:06 | 显示全部楼层
  其实我的这个问题是可以这样想的,我的那段程序可以用在那些以线形和线宽来命名建立图层的绘图工作中的,这样在使用直线命令过程中就可以不用考虑切换图层的问题了,拿我的那段程序来说,把sdl()过程定义一个外部快捷命令sdl,这样当你想画细双点线的线段时就可以完全不用考虑这个线画到那里了,因为它会被指定到虚线层上的。而这个层也是你在使用这个命令时自动建立的。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|申请友链|Archiver|手机版|小黑屋|辽公网安备|晓东CAD家园 ( 辽ICP备15016793号 )

GMT+8, 2024-11-23 00:00 , Processed in 0.275610 second(s), 33 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表