乐筑天下

搜索
欢迎各位开发者和用户入驻本平台 尊重版权,从我做起,拒绝盗版,拒绝倒卖 签到、发布资源、邀请好友注册,可以获得银币 请注意保管好自己的密码,避免账户资金被盗
查看: 73|回复: 4

[编程交流] 错误:2D-3D点:无/lis

[复制链接]

4

主题

15

帖子

11

银币

初来乍到

Rank: 1

铜币
20
发表于 2022-7-6 06:28:42 | 显示全部楼层 |阅读模式
你好
 
尝试为立面图编写新的lisp,但有一些问题我无法解决:/
 
第一个错误:“错误的参数类型:2D/3D点:nil”
此例程昨天正常工作,但现在出现如上所示的错误消息
 
第二个错误:(命令“p1 p2”)(命令“p4 p5”)
p1和p5总是有一个z值,我不明白:/
 
第三个错误:acad始终计算随机角度:/
 
我是新手,我从这么多lisp文件中创建/编辑了这个例程。所以请告诉我自己的设计错误。
 
此处附上示例dwg和代码。。。谢谢你的预付款
 
  1. (defun c:www ()
  2. (vl-load-com)
  3. (setq mysset (ssget '((0 . "*POLYLINE")))
  4.   mylength (sslength mysset)
  5.   counter 0
  6.   )
  7. (while (< counter mylength)
  8. (setq objs (ssname mysset counter))
  9. (setq data (vlax-get (vlax-ename->vla-object objs) "Coordinates") i 0)
  10. (setq blk 1)
  11. (repeat (/ (length data) 3)
  12. (setq x (nth i data)
  13.   y (nth (+ 1 i) data)
  14.   z (nth (+ 2 i) data)
  15.   p (list x y)
  16.   i (+ i 3)
  17.   n (strcat "ELEV_" (itoa blk))
  18.   blk (+ 1 blk)
  19.   )
  20. (cond ((= blk 2) (setq p1x (car p)
  21.                                p1y (cadr p)
  22.                                     p1 (list p1x p1y)))
  23.   ((= blk 3) (setq p2x (car p)
  24.                                p2y (cadr p)
  25.                                     p2 (list p2x p2y)))
  26.   ((= blk 4) (setq p3x (car p)
  27.                                p3y (cadr p)
  28.                                     p3 (list p3x p3y)))
  29.   ((= blk 5) (setq p4x (car p)
  30.                                p4y (cadr p)
  31.                                     p4 (list p4x p4y)))
  32.   ((= blk 6) (setq p5x (car p)
  33.                                p5y (cadr p)
  34.                                     p5 (list p5x p5y)))
  35.   )
  36. (setq di-p1_p2 (distance p1 p2)
  37.   di-p4_p5 (distance p4 p5)
  38.   tx-p1_p2 (/ (+ p1x p2x) 2)
  39.   ty-p1_p2 (/ (+ p1y p2y) 2)
  40.   txt-p1_p2 (list tx-p1_p2 ty-p1_p2)
  41.   tx-p4_p5 (/ (+ p4x p5x) 2)
  42.   ty-p4_p5 (/ (+ p4y p5y) 2)
  43.   txt-p4_p5 (list tx-p4_p5 ty-p4_p5)
  44.   ang (angle p1 p5)
  45.   )
  46. (command "-insert" n p "" "" (angtos ang) (rtos z 2 3))
  47. (setq elev_block (entlast))
  48. (command "rotate" elev_block "" p 90)
  49. (command "_line" p1 p2 "")
  50. (command "_line" p4 p5 "")
  51. );repeat
  52. (command "-insert" "ELEV_DIST_LEFT" txt-p1_p2 "" "" (angtos ang) (rtos di-p1_p2 2 1))
  53. (command "-insert" "ELEV_DIST_RIGHT" txt-p4_p5 "" "" (angtos ang) (rtos di-p4_p5 2 1))
  54. (setq counter (+ 1 counter))
  55. );while
  56. )

奥尔内克(2)。图纸
回复

使用道具 举报

11

主题

968

帖子

919

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
99
发表于 2022-7-6 06:56:26 | 显示全部楼层
首先,由于非局部变量,某物在一天工作而在下一天不工作的情况是10次中有9次。请参见:http://www.lee-mac.com/localising.html
 
某些z值不应为的情况可能是由于当前设置的高程,或者它可能捕捉到某个现有对象。通过在每个点列表的末尾添加z值,可以将z值强制为0,然后为了避免捕捉,在发送到直线命令的每个点之前执行“非”捕捉力。
 
随机角度是使用lisp时的一种情况,角度是以弧度而不是度定义的:http://www.cadtutor.net/forum/showthread.php?14853-弧度到度
回复

使用道具 举报

4

主题

15

帖子

11

银币

初来乍到

Rank: 1

铜币
20
发表于 2022-7-6 07:11:15 | 显示全部楼层
非常感谢irneb和LeeMac
 
这是最终版本,它的工作就像一个魅力
 
  1. (defun c:kot (/ obj xyz spt ept ang vtx
  2.                b i x y z p n
  3.                p1 p2 p3 p4 p5
  4.                l_dist r_dist
  5.                l_coor r_coor rotate)
  6. (vl-load-com)
  7. (setq mysset (ssget '((8 . "PL_ENKESIT")(0 . "*POLYLINE")))
  8.      mylength (sslength mysset)
  9.      counter 0
  10.   )
  11. (while (< counter mylength)
  12. (setq obj (ssname mysset counter)
  13.      xyz (vlax-get (vlax-ename->vla-object obj) "Coordinates")
  14.      spt (vlax-curve-getstartpoint obj)
  15.      ept (vlax-curve-getendpoint obj)
  16.      ang (+ (* 180.0 (/ (angle spt ept) pi)) 90)
  17.      vtx 5
  18.      b 0
  19.      i 0
  20.      )
  21. (if (= (/ (length xyz) 3) vtx) (progn
  22. (repeat vtx
  23. (setq x (nth i xyz)
  24.      y (nth (+ 1 i) xyz)
  25.      z (nth (+ 2 i) xyz)
  26.      p (list x y)
  27.      i (+ 3 i)
  28.      b (+ 1 b)
  29.      n (strcat "ELEV_" (itoa b))
  30.      )
  31. (cond ((= b 1) (setq p1 (list (car p) (cadr p))))
  32.      ((= b 2) (setq p2 (list (car p) (cadr p))))
  33.      ((= b 3) (setq p3 (list (car p) (cadr p))))
  34.      ((= b 4) (setq p4 (list (car p) (cadr p))))
  35.      ((= b 5) (setq p5 (list (car p) (cadr p))))
  36.      )
  37. (command "-insert" n "_non" p "" "" ang (rtos z 2 3))
  38. );repeat
  39. (setq l_dist (distance p1 p2)
  40.      r_dist (distance p4 p5)
  41.      l_coor (list (/ (+ (car p1) (car p2)) 2) (/ (+ (cadr p1) (cadr p2)) 2))
  42.      r_coor (list (/ (+ (car p4) (car p5)) 2) (/ (+ (cadr p4) (cadr p5)) 2))
  43.      rotate (* 180.0 (/ (angle p1 p2) pi))
  44.      )
  45. (command "layer" "set" "ELEV_SECTION" ""
  46.         "_line" "_non" p1 "_non" p2 "_non" p4 "_non" p5 ""
  47.         "-insert" "ELEV_DIST_LEFT" "_non" l_coor "" "" rotate (rtos l_dist 2 1)
  48.         "-insert" "ELEV_DIST_RIGHT" "_non" r_coor "" "" rotate (rtos r_dist 2 1)
  49.         )
  50. );progn
  51. );if
  52. (setq counter (+ 1 counter))
  53. );while
  54. (princ)
  55. );defun
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 07:18:46 | 显示全部楼层
我很高兴听到我的教程是可理解的和有益的!
谢谢你的推荐,我很感激。
 
做得好,fleshget
回复

使用道具 举报

11

主题

968

帖子

919

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
99
发表于 2022-7-6 07:43:03 | 显示全部楼层
令人惊叹的很高兴它起作用了!
 
不客气,李,如果这不是一个很好的资源,我不会推荐它!感谢您为社区提供如此全面的辅导!
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

QQ|关于我们|小黑屋|乐筑天下 繁体中文

GMT+8, 2025-8-16 01:09 , Processed in 2.432554 second(s), 62 queries .

© 2020-2025 乐筑天下

联系客服 关注微信 帮助中心 下载APP 返回顶部 返回列表