找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 1614|回复: 1

[你问我答] LISP中用ActiveX设置Polyline的bulge

[复制链接]

已领礼包: 145个

财富等级: 日进斗金

发表于 2013-5-13 22:48:37 | 显示全部楼层 |阅读模式

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

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

×

问:下面的代码是我想在LISP中设置polyline的bulge的过程,提示错误,正确的语法是什么?[

[pcode=lisp,true]
Command: !pline
#
Command: !mspace
#
Command: (vla-SetBulge mSpace pline 0 0.5)
; error: ActiveX Server returned the error: unknown name: SetBulge
Command: (vla-put-SetBulge pline 0 0.5)
; error: no function definition: VLA-PUT-SETBULGE
Command: (vlax-invoke-method mspace 'setbulge pline 0 0.5)
; error: ActiveX Server returned the error: unknown name: SETBULGE
Command: (vlax-put-property pline 'setbulge 0 0.5)
; error: ActiveX Server returned an error: Type mismatch[/pcode]

回答:

帮助文件里面包含了关于这个问题的信息,在 AutoCAD ActiveX and VBA Reference, 位于 Object Model -> Polyline Object -> SetBulge 方法.
然后我们看 Visual LISP Developer's Guide: Using Visual LISP Functions with ActiveX Methods -> Determining How to Call a Function

读完两个帮助文件后,你应该注意到 SetBulge 是polyline对象的方法, 即不是  Model Space Collection 的 Property 也不是 Method

你应该找到下面设置Polyline对象的bulge的代码:

[pcode=lisp,true]
(vl-load-com)

(defun a_Polyline_wArc()

  (setq acadapp (vlax-get-Acad-Object)
     acaddoc (vla-get-ActiveDocument acadapp)
     *ModelSpace*  (vla-get-ModelSpace acaddoc)
  )


  (setq pt1 (list 2.93905 1.87048 0.0))
  (setq pt2 (list 5.54349 4.81627 0.0))
  (setq pt3 (list 8.78096 4.97892 0.0))
  (setq pt4 (list 12.6153 1.20181 0.0))

  (setq Points (apply 'append (list pt1 pt2 pt3 pt4)))
  (setq ptlstlen (length Points))

  (setq PointDataA (vlax-make-safearray vlax-vbDouble (cons 0 (1- ptlstlen))))
  (vlax-safearray-fill PointDataA Points)
  (setq PointData (vlax-make-variant PointDataA (logior vlax-vbarray
vlax-vbDouble)))

  (setq myPolyObj (vla-addPolyline *ModelSpace* PointData))

  (vla-Put-Color myPolyObj acBlue)

  (setq strtWidth 1.0 endWidth 1.0 verticies (1- (/ ptlstlen 3)) indx0)
  (while (< indx verticies)
       (vla-SetWidth myPolyObj indx strtWidth endWidth)
       (setq indx (1+ indx))
  )
  (vla-SetBulge myPolyObj 1 -0.42080)
  (vla-Update myPolyObj)
   
  (princ)
)
; (a_Polyline_wArc)
[/pcode]



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

已领礼包: 2个

财富等级: 恭喜发财

发表于 2015-3-10 17:44:04 | 显示全部楼层
不想水的,没办法啊
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-9-24 14:34 , Processed in 0.187906 second(s), 35 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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