求助一个关于循环画线段的问题
本帖最后由 sunqv 于 2023-3-22 22:27 编辑我要的效果是,如果图中选中的线段的扩展属性中的起点埋深为空或者为0,则在起点线段的位置标注一条线出来,如果选中的线段的扩展属性中终点埋深为空,则在线段终点的位置标注一条线。
源文件见附件,为什么我用下面的命令执行后,不能实现把线段没有埋深的一端标注出来?下面的lsp选择多条线段后,只会标注选择的最后一条线段的终点埋深标注出来(不管是不是终点埋深为 0,都会标注出来)
求教大神解惑,不胜感激
[*](DEFUN C:QMS() ;缺埋深标注
[*](setq SS (SSGET '((8 . "*LINE") ) ))
[*](setq I 0) (REPEAT (SSLENGTH SS )
[*] (setq EN (SSNAME SS I ))
[*] (setq XDATA (CDR (ASSOC -3 (ENTGET EN '("*" ) ) ) ))
[*] (setq LAYER (STRCAT (SUBSTR (DXF EN 8 ) 1 2 ) "MARK" ))
[*]
[*] (setq QDZB (DXF EN 10))
[*] (setq ZDZB (DXF EN 11 ))
[*]
[*] (setq QDX (CAR(DXF EN 10)))
[*] (setq QDY (CADR(DXF EN 10)))
[*] (setq QDXY(LIST QDX QDY)))
[*] (setq QDX1 (+ QDX 10))
[*] (setq QDY1 (+ QDY 10))
[*] (setq QDXY1 (LIST QDX1 QDY1))
[*]
[*] (setq ZDX (CAR(DXF EN 11)))
[*] (setq ZDY (CADR(DXF EN 11)))
[*] (setq ZDXY (LIST ZDX ZDY))
[*] (setq ZDX1 (+ ZDX 10))
[*] (setq ZDY1 (+ ZDY 10))
[*] (setq ZDXY1 (LIST ZDX1 ZDY1))
[*]
[*] (setq ANG1 (ANGLE QDZB ZDZB ))
[*] (setq ANG2 (ANGLE ZDZB QDZB ))
[*]
[*](setq QDMS (CDR (CAR (CDR (ASSOC "起点埋深" XDATA ) ) ) ))
[*](setq ZZMS (CDR (CAR (CDR (ASSOC "终点埋深" XDATA ) ) ) ))
[*]
[*](if (OR(= QDMS "0.00")(= QDMS "0")(= QDMS nil)) (command "_.line" QDXY QDXY1 ""))
[*](if (OR(= ZDMS "0.00")(= ZDMS "0")(= ZDMS nil)) (command "_.line" ZDXY ZDXY1 ""))
[*]
[*](PRINC )
[*](setqI (+ I 1 ))
[*])
repeat的括号位置不对吧
另
代码排版整规整一点
这样可以减少犯错的几率 我以前用在别的代码中就没问题的,求大神帮优化一下代码 因为你repeat里只保存了最后一组坐标。仔细检查一下吧! 能帮忙改一下吗?谢谢,真心不懂啊 埋深是指某点地表以下的垂直深度,如基础埋深,标高是指以某基准面为起点向上的高度,如山顶标高。 没人帮忙吗?真的很需要,求助万能的坛友帮忙了
页:
[1]