明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 2203|回复: 12

这段代码有什么问题 lisp

  [复制链接]
发表于 2004-4-3 23:20:00 | 显示全部楼层 |阅读模式
请教各位大侠,这个代码有什么错 循环不能嵌套吗? 请指点: (defun c:dcc ()
(setvar "osmode" 0)
(setq p11 (getpoint "\n请选择起点:")
p12 (getcorner p11 "\n请选择另一角点:"))
(setq ss (ssget "c" p11 p12 '((0 . "LWPOLYLINE,LINE"))))
(setq num (sslength ss)
NN 0 NN1 0)
(while (< NN num)
(setq nam (ssname ss NN)
ent (entget nam))
(setq na_ty (cdr (assoc 0 ent))) (if (= an_ty "LWPOLYLINE")
(progn
(pline_po)
(while (< NN1 num)
; (if (= an_ty "line")
; (progn
(setq nam1 (ssname ss NN)
ent1 (entget nam1))
(setq na_ty1 (cdr (assoc 0 ent1)))
(if (= an_ty1 "line")
(progn
(setq l-1 (cdr (assoc 10 ent1))
l-2 (cdr (assoc 11 ent1)))
(setq int1 (inters p-1 p-2 l-1 l-2)
int2 (inters p-2 p-3 l-1 l-2))
(if (/= int1 nil) (setq bb1 int1))
(if (/= int2 nil) (setq bb2 int2))
);end progn
);end if
(setq NN1 (1+ nn1))
);while
);progn
);end if
(setq NN (1+ NN))
);while (princ (list bb1 bb2 p-1 p-2 p-3))
(princ));end defun
;求PLINE上的点
(defun pline_po ()
(load "get_pl_pot")
(setq plpot (get_pl_pot ent)) (setq plpot
(vl-sort plpot
(function (lambda (e1 e2)
(< (cadr e1) (cadr e2)) ) ) ) ;按Y坐标排序(小到大)
);;end setq (SETQ P-1 (NTH 0 plpot) p-2 (NTH 1 plpot));求点(水平) (setq lst1
(vl-sort (list p-1 p-2)
(function (lambda (e1 e2)
(< (car e1) (car e2)) ) ) ) ;按Y坐标排序(小到大)
);;end setq
(setq p-1 (nth 0 lst1) p-2 (nth 1 lst1)) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(setq plpot1
(vl-sort plpot
(function (lambda (e1 e2)
(< (car e1) (car e2)) ) ) ) ;按X坐标排序(大到小)
);;end setq (setq p-3 (nth 2 plpot1) p-4 (nth 3 plpot1));求点(垂直)

(setq lst2
(vl-sort (list p-3 p-4)
(function (lambda (e1 e2)
(< (cadr e1) (cadr e2)) ) ) ) ;按Y坐标排序(小到大)
);;end setq
;(setq p-3 (nth 0 lst2) p-4 (nth 1 lst2))
(setq p-3 (nth 1 lst2))
);end defun
发表于 2004-4-3 23:33:00 | 显示全部楼层
你最好说说你的程序是做什么的,你说的问题出在什么地方,或者想怎么做却做不到,否则,要从头到尾把你的程序看明白了,再来看问题出在哪儿,似乎太费时间了, 你说说岂不可以节约不少时间?
发表于 2004-4-3 23:47:00 | 显示全部楼层
支持楼上,问问题要问到点子上,有什么异常情况要说的尽量详细。
 楼主| 发表于 2004-4-4 10:38:00 | 显示全部楼层
不好意思!


我是想求出图中矩形与线的两个交点(int1 int2)


p-1 p-2 p-3已求出来,我不知道用循环嵌套循环是不是可以用。


现在按上面的代码求出来的int1 int2为nil。p-1 p-2 p-3均可求得,请大侠指点。


       


本帖子中包含更多资源

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

x
 楼主| 发表于 2004-4-4 10:39:00 | 显示全部楼层

本帖子中包含更多资源

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

x
 楼主| 发表于 2004-4-4 10:43:00 | 显示全部楼层
如果两个尺寸标注文字有一部分重叠时, 能用LISP实现文字移动来调整吗(想让两尺寸文字分别向外边移出一段距离)
发表于 2004-4-4 10:56:00 | 显示全部楼层
不是求交点问题,而是选择问题,你应该跟踪一下,看是否选择到那两条比较长的线(用“C”的选择方式是窗选,需要将对象完全包含其中才能被选中)
 楼主| 发表于 2004-4-4 11:11:00 | 显示全部楼层
我测试过这两条线已选到了,可总是返回的是nil。


搞不懂为什么会还是nil值,再有劳meflying大哥一下。
发表于 2004-4-4 11:41:00 | 显示全部楼层
大致看了一下,发现有很多问题,,,,


1、取类型时用na_ty,判断时又用an_ty,(从这一点,我就奇怪,你的程序如何能求出p-1,p-2,p-3)


2、同样还有na_ty1和an_ty1的问题


3、从DXF组码中取出的对象类型永远不会为"line",它都是大写的


4、未给get_pl_pot,我无法调试
 楼主| 发表于 2004-4-4 11:51:00 | 显示全部楼层
哦,我太粗心了,等下我再传个
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-11-28 00:49 , Processed in 0.186260 second(s), 27 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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