明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 773|回复: 3

[已解答] 为什么执行这个Lisp会出现未知命令的提示呢?

[复制链接]
发表于 2015-1-30 17:52 | 显示全部楼层 |阅读模式

运行这个才写的多线段标注命令,不知道为啥会一直提示未知命令TT3。
准确的说是,有多少个多线段顶点就会提示多少次。
难道是因为用了两次repeat的原因?
劳烦懂的帮忙看看?
  1. (defun c:tt3(/ m ss lsts)
  2.   (vl-load-com)  
  3.   (setvar "cmdecho" 0)
  4.     (Setq m 0)
  5.     (setq ss (ssget '((0 . "LWPOLYLINE"))))
  6.     (repeat (sslength ss)
  7.         (setq lsts (get_point (ssname ss m)))
  8.         (dimaligned lsts)
  9.         (setq m (+ m 1))
  10.     )
  11. (princ)
  12. )
  13. ;;;求多段线顶点坐标集合
  14. (defun get_point (ent / ptlist ptlist1 n)
  15. (setq ptlist '() ptlist1 '() n 0)
  16. (setq ptlist (vlax-safearray->list(vlax-variant-value(vlax-get-property(vlax-ename->vla-object ent)'Coordinates))))
  17.       (repeat (/ (length ptlist) 2)
  18.         (setq ptlist1 (cons (list (nth n ptlist) (nth (setq n (1+ n)) ptlist)) ptlist1))
  19.         (setq n (1+ n))
  20.       )
  21. (setq ptlist2 (mapcar (function (lambda (x) (coorchang x))) ptlist1))
  22. )
  23. ;;;;;求两点的中点垂直过50的坐标
  24. (defun get_mid_pt (pt1 pt2 / d ang)
  25.     (setq d   (* (distance pt1 pt2) 0.5)
  26.           ang (angle pt1 pt2)
  27.     )
  28.     (polar pt1 ang d)
  29. )
  30. ;;;;;;标注多线段
  31. (defun dimaligned (llst / pt1 pt2 pt i)
  32.     (setq i 0)
  33.     (repeat (- (length llst) 1)
  34.         (setq pt1 (nth i llst))
  35.         (setq pt2 (nth (setq i (1+ i)) llst))
  36.         (setq pt  (get_mid_pt pt1 pt2))
  37.         (vl-cmdf "_dimaligned" pt1 pt2 pt "")
  38.     )
  39. )
  40. ;;;;二维坐标转换为三维
  41. (defun coorchang (lst)
  42.     (setq p1 (car  lst))
  43.     (setq p2 (cadr lst))
  44.     (setq lst (list p1 p2 0))
  45. )

本帖子中包含更多资源

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

x
 楼主| 发表于 2015-1-30 17:53 | 显示全部楼层
另外这个的效率简直慢到爆,试了下多线段躲起来的时候,就和动画片一样....不知道有没有啥优化的思路?
发表于 2015-1-30 18:55 | 显示全部楼层
(vl-cmdf "_dimaligned" pt1 pt2 pt "") -------> (vl-cmdf "_dimaligned" pt1 pt2 pt )
 楼主| 发表于 2015-1-30 20:25 | 显示全部楼层
longcashman 发表于 2015-1-30 18:55
(vl-cmdf "_dimaligned" pt1 pt2 pt "") -------> (vl-cmdf "_dimaligned" pt1 pt2 pt )

额 果然如此 看来是习惯用其它需要退出的命令 造成的  感谢
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-3-28 16:42 , Processed in 0.274113 second(s), 26 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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