明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 2368|回复: 12

求教lsp程序问题!!!!!

  [复制链接]
发表于 2005-6-22 17:36:00 | 显示全部楼层 |阅读模式
求教lsp程序问题!!!!! (defun c:bhh ()
(setvar "cmdecho" 0)
(setq fz (ssget (list (cons 0 "lwpolyline,polyline,line"))))
(command "convertpoly" "h" fz "")
(setq n (sslength fz))
(setq i 0)
(setq n1 0
n2 0
n3 0
)
(repeat n
(setq aa (ssname fz i))
(setq bb (entget aa))
(setq xx (cdr (assoc 0 bb)))
(if (= xx "POLYLINE")
(progn
(setq b (cdr (assoc 70 bb)))
(setq cc (rem b 2))
(if (= cc 0)
(progn
(setq spt (vlax-curve-getstartpoint aa)
ept (vlax-curve-getendpoint aa)
)
(setq px1 (car spt))
(setq py1 (cadr spt)) (setq px2 (car ept))
(setq py2 (cadr ept)) (if (and (= px1 px2) (= py1 py2))
(progn
(command "pedit" "m" aa "" "c" "") ;;;;;在这里怎样加程序才能去掉多于点 (setq n1 (+ n1 1))
)
)
(if (or (/= px1 px2) (/= py1 py2))
(progn
(command "change" aa "" "p" "c" "4" "" "")
(setq n2 (+ n2 1))
)
)
) ;if
) ;
) ;progn
) ;if
(if (= xx "LINE")
(progn
(command "change" aa "" "p" "c" "5" "" "")
(setq n3 (+ n3 1))
)
)
(setq i (+ i 1))
)
(setq n1 (itoa n1)
n2 (itoa n2)
n3 (itoa n3)
)
(alert (strcat "\n共闭合房子" n1 "个,发现不闭合房子"
n2 "个,发现LINE线" n3
"条"
)
)
) ;;;上面程序是我处理polygon线画的房子,查出不闭合的将它闭合,有的房子用pline线画的,但是有的房子起点和终点在一个点上,请问我怎么样才能去掉那个多于点...
;;;;顺便再问一下各位大哥,怎样才能去掉一条线上任意一个点;;;;
;;;谢谢了,,,呵呵.............. 我来这个网站时间不长,但是觉得学到了很多知识,,很感谢各位哥哥的帮忙吧... 也许你们可能没我大,但是水平比我高就叫哥哥,,呵呵.............在工作上,我也用到了不少在明经上学到的知识... 很感谢大家..呵呵.....

本帖子中包含更多资源

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

x
 楼主| 发表于 2005-6-22 23:33:00 | 显示全部楼层
mei ren a
 楼主| 发表于 2005-6-23 11:44:00 | 显示全部楼层
ding
发表于 2005-6-23 16:24:00 | 显示全部楼层
起点和终点在同一个点上也可以设置闭合啊,干嘛要去掉一个点.
 楼主| 发表于 2005-6-23 17:40:00 | 显示全部楼层
可以设置闭合,但就是要求去掉一个点
 楼主| 发表于 2005-6-25 11:44:00 | 显示全部楼层
可以设置闭合,但就是要求去掉一个点


xie xie
发表于 2005-6-25 17:06:00 | 显示全部楼层
更新多义线的顶点数据不行吗?把顶点数据提取出来,去掉终点那个.


还有,我不知道你是程序是用来做什么的,照你的说法,你可以这样:如果多义线起终点重合的话,你也可以把它当成是闭合的房子啊.将房子总数加1不就完了.
 楼主| 发表于 2005-6-26 10:46:00 | 显示全部楼层
我是做测绘的,不能那么做,必需去点,谁帮我改改吧。。
 楼主| 发表于 2005-6-26 11:55:00 | 显示全部楼层
我是初学者,,怎么样更新多义线的顶点数据,请哪位好心的大哥,帮帮我吧。。谢谢了。。。。。。


我是做测绘的,, 要入库的,要求很严。。。
发表于 2005-6-26 17:24:00 | 显示全部楼层
  1. (defun c:bhh ()
  2.           ;(CMDLA0)
  3.    (setq fz (ssget '((0 . "*LINE"))))
  4.    (command "convertpoly" "H" fz "")  ;转换成POLYLINE
  5.    (setq  n   (sslength fz)
  6.   i   -1
  7.   n1 0
  8.   n2 0
  9.   n3 0
  10.   n4 0        ;本身闭合
  11.    )
  12.    (while (setq aa (ssname fz (setq i (1+ i))))
  13.        (setq bb (entget aa)
  14.      xx (dxf 0 bb)
  15.        )
  16.        (if  (and (= xx "POLYLINE")
  17.            (= (dxf 70 bb) 0)
  18.   )
  19.            (progn
  20.   (setq spt (vlax-curve-getstartpoint aa)
  21.              ept (vlax-curve-getendpoint aa)
  22.   )
  23.   (if (equal spt ept)
  24.      (progn
  25.          (command "pedit" "m" aa "" "c" "")
  26.          (command "change" aa "" "p" "c" "2" "")
  27.          (setq n1 (1+ n1))
  28.      )
  29.      (progn
  30.          (command "change" aa "" "p" "c" "4" "")
  31.          (setq n2 (1+ n2))
  32.      )
  33.   )
  34.            )
  35.        )
  36.        (if  (and (= xx "POLYLINE")
  37.            (= (dxf 70 bb) 1)
  38.   )
  39.            (progn
  40.   (command "change" aa "" "p" "c" "2" "")
  41.   (setq n4 (1+ n4))
  42.            )       )
  43.        (if  (= xx "LINE")
  44.            (progn
  45.   (command "change" aa "" "p" "c" "5" "")
  46.   (setq n3 (+ n3 1))
  47.            )
  48.        )
  49.    )
  50.    (alert (strcat "\n原有闭合房子"
  51.      (itoa n4)
  52.      "个;本次闭合房子"
  53.      (itoa n1)
  54.      "个;发现不闭合房子"
  55.      (itoa n2)
  56.      "个;发现LINE线"
  57.      (itoa n3)
  58.      "条。"
  59.    )
  60.    )
  61.           ;(CMDLA1)
  62.    (princ)
  63. )
  64. (defun dxf (code elist) (cdr (assoc code elist)))
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-11-17 15:46 , Processed in 0.187455 second(s), 27 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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