Jully 发表于 2011-5-11 21:28:46

这段代码错在哪里???




;第一次发帖手误,打错字了,请谅解!

(defun get-point(/ pts dd n i obj stp endppt_name pt_data pt lst pp )
(setq entss(car(entsel)))
(setq p (getpoint "/n请输入图形质心:"))
(setq p (trans p 1 0))
(setq H 20)
(setq pts (ssadd))
(setq dd 20.00)
(setq n 0)
(setq i 0)
(setq obj (vlax-ename->vla-object entss))
(setq stp (vlax-curve-getStartPoint obj)
      pts (cons stp pts)
)
(setq endp (vlax-curve-getEndPoint obj))
(command "_measure" entss dd)
(setq sst (ssget "p"))
(repeat (sslength sst)
    (setq pt_name (ssname sst n))
    (setq pt_data (entget pt_name))
    (setq pt (cdr (assoc 10 pt_data)))
    (if (= endp pt)
      (setq i (1+ i))
    )
    (setq pts (cons pt pts))
    (setq n (1+ n))
)
(if (= i 0)
    (setq pts (cons endp pts))
)

(setq lst (mapcar '(lambda (x) (polar p (angle p x) (- (distance p x) ( H)))) pts))
)

;我要求的是把一个对象等距分点,并把这些点储存在选择集中,然后向质心偏移一定距离.运行时,老出现<列表错误>







http://bbs.mjtd.com/xwb/images/bgimg/icon_logo.png 该贴已经同步到 Jully的微博

Andyhon 发表于 2011-5-11 22:23:41

(polar p (angle p x) (- (distance p x) ( H))))
先试着改成这个
(polar p (angle p x) (- (distance p x) H))

Jully 发表于 2011-5-12 09:06:37

回复 Andyhon 的帖子

不是这个错误,改后结果一样

Andyhon 发表于 2011-5-12 09:16:38

(setq pts (ssadd))
封掉
;; (setq pts (ssadd))

没调试文件没能验证

Jully 发表于 2011-5-12 09:38:29

回复 Andyhon 的帖子

这样没问题了,为什么要封掉?;; (setq pts (ssadd))

Andyhon 发表于 2011-5-12 10:05:08

setq pts (ssadd))
....
(cons stp pts)

验证===>
(type stp)
(type pts)

Jully 发表于 2011-5-12 10:58:36

非常感谢!
页: [1]
查看完整版本: 这段代码错在哪里???