找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 2015|回复: 7

[求助] [求助]:vla-add3dpoly和vla-addlightweightpoly的问题

[复制链接]
发表于 2003-7-1 08:57:15 | 显示全部楼层 |阅读模式

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

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

×
我刚学LISP,有个问题向各位请教:vla-add3dpoly和vla-addlightweightpoly方法怎么用?我用VBA写了一个画三维螺旋线的程序,现在想用VLISP写,在vla-add3dpoly这卡着了,诚请高手按我的VBA程序的想路帮我写一段VLISP代码(不要用commmand函数,要用vla-add3dpoly方法),先谢谢了。

  1. Sub Example_Add3DPoly()

  2. Dim polyObj As Acad3DPolyline
  3. Dim points() As Double
  4. Dim a, n As Integer
  5. Dim R1, R2, H As Double
  6. Dim pa As Variant
  7. Const PI = 3.1415926535

  8. pa = ThisDrawing.Utility.GetPoint(, "请输入基点:")
  9. R1 = ThisDrawing.Utility.GetDistance(pa, "请输入起点半径:")
  10. R2 = ThisDrawing.Utility.GetDistance(pa, "请输入终点半径:")
  11. H = ThisDrawing.Utility.GetDistance(pa, "请总高度:")
  12. n = ThisDrawing.Utility.GetReal("请输入匝数:")

  13. ReDim points(0 To 3 * 360 * n + 2) As Double

  14. For a = 0 To 3 * 360 * n Step 3
  15. points(a) = pa(0) + (R1 + (a / 3) * (R2 - R1) / 360 / n) _
  16. * Cos(2 * PI * (a / 3) / 360)
  17. points(a + 1) = pa(1) + (R1 + (a / 3) * (R2 - R1) / 360 / n) _
  18. * Sin(2 * PI * (a / 3) / 360)
  19. points(a + 2) = pa(2) + H * (a / 3) / 360 / n
  20. Next

  21. Set polyObj = ThisDrawing.ModelSpace.Add3DPoly(points)
  22. ZoomExtents
  23. End Sub
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
发表于 2003-7-1 10:10:19 | 显示全部楼层
Creates a 3D polyline from the given array of coordinates.
VBA : RetVal = object.Add3Dpoly(PointsArray)
VL : RetVal = (vla-Add3Dpoly object PointsArray)
(setq myobj (vla-Add3DPoly mspace tmp))
Example :
  1. (defun c:al-Add3DPoly ( / mspace pt ptlist tmp myobj)
  2.   (vl-load-com)
  3.   (setq mspace (vla-get-modelspace
  4.                    (vla-get-activedocument
  5.                              (vlax-get-acad-object))))
  6.   (setq pt (getpoint "\nSpecify start point: "))
  7.   ; Start by assembling a list of points
  8.   (setq ptlist (cons pt ptlist))
  9.   (while (setq pt (getpoint "\nSpecify next point: " pt))
  10.     (setq ptlist (cons pt ptlist))
  11.   );while
  12.   ; "dissolve" the points into atoms with append:
  13.   (setq ptlist (apply 'append ptlist))
  14.   ; If number of coordinates in point list is not
  15.   ; a multiple of 3 then a lwpolyline can't be made.
  16.   ; If it's a multiple of 3 then put the point
  17.   ; list into an array and pass it on to Add3DPoly:
  18.   (if (= (rem (length ptlist) 3) 0)
  19.     (progn
  20.       (setq
  21.         tmp (vlax-make-safearray
  22.                vlax-vbDouble
  23.                (cons 0 (- (length ptlist) 1))
  24.             )
  25.       )
  26.       (vlax-safearray-fill tmp ptlist)
  27.       (setq myobj (vla-Add3DPoly mspace tmp))
  28.     );progn
  29.     (princ "\nError: 3DPoly could not be created")
  30.   );if
  31. (princ)
  32. );defun
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2003-7-1 10:41:46 | 显示全部楼层
谢谢lsjjm 兄!程序我已运行了,虽然还不能全看懂,但思路已知道了,正在慢慢消化。
再一次谢谢lsjjm 兄!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2005-1-10 19:51:30 | 显示全部楼层
晕死了!看不懂哦!可不可以说明一下下在什么文件夹里面
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 2个

财富等级: 恭喜发财

发表于 2005-1-13 11:21:54 | 显示全部楼层
我正学这方面的内容,看了2楼的例子,帮助很大,谢谢。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2005-1-14 18:16:30 | 显示全部楼层
可不可給一個 VLA-ADDSPLINE 方式的看看. 我不懂SPLINE 的怎麼建, 我也看過HELP文件, 可是看不太明. 我看大俠們的就很容易看明, 謝謝,
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2005-1-15 00:04:23 | 显示全部楼层

  1. (defun c:tt (/ pts pls ept spt spl)
  2.   (while (setq pt (getpoint "\nPoint<Exit>: "))
  3.     (setq pts (cons pt pts))
  4.   )
  5.   (if (> (length pts) 1)
  6.     (progn
  7.       (setq pls        (apply 'append pts)
  8.             ept        (mapcar '- (car pts) (cadr pts))
  9.             spt        (mapcar '- (cadr (reverse pts)) (last pts))
  10.             spl        (vlax-make-variant
  11.                   (vlax-safearray-fill
  12.                     (vlax-make-safearray
  13.                       vlax-vbdouble
  14.                       (cons 1 (length pls))
  15.                     )
  16.                     pls
  17.                   )
  18.                 )
  19.       )
  20.       (vla-addspline
  21.         (vla-get-modelspace
  22.           (vla-get-activedocument (vlax-get-acad-object))
  23.         )
  24.         spl
  25.         (vlax-3d-point spt)
  26.         (vlax-3d-point ept)
  27.       )
  28.     )
  29.   )
  30.   (princ)
  31. )
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 1336个

财富等级: 财源广进

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-9-25 00:36 , Processed in 0.376225 second(s), 45 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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