明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
12
返回列表 发新帖
楼主: dwt2601

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

  [复制链接]
 楼主| 发表于 2005-6-29 11:37:00 | 显示全部楼层
xie le
发表于 2005-6-29 16:17:00 | 显示全部楼层
把线的坐标放在表里删除不要的点,再用划线命令重画一根线,删除原来的,所有搞定,想去哪个去哪个,问题是脑子动一下。
发表于 2005-6-30 18:14:00 | 显示全部楼层
试试这个 (defun C:JDH_SDXCJD()
(setvar "cmdecho" 0)
(setq xlistcord nil)
(write-line "***河南省测绘工程院 金德海 2004年4月***")
(initget "q f d")
(setq qc_flags (getkword "\n请选择Q(全处理)/F(分层处理)/D(选择处理):"))
(if (eq qc_flags "q")
(progn
(command "-layer" "th" "*" "")
(write-line "***本命令用于处理本幅图内所有重迭节点***")
(write-line "将处理较长时间请等候,正在处理······")
(setq S (ssget "x" (list
'(-4 . "<OR")
(cons 0 "lwpolyline")
(cons 0 "polyline")
'(-4 . "OR>")
)))
)
)
(if (eq qc_flags "f")
(progn
(setq pn(strcase(getstring "\n处理线所在层: ")))
(write-line " 请稍候,正在处理······")
(setq S (ssget "x" (list
'(-4 . "<AND")
'(-4 . "<OR")
(cons 0 "lwpolyline")
(cons 0 "polyline")
'(-4 . "OR>")
(cons 8 pn)
'(-4 . "AND>")
)))
)
)
(if (eq qc_flags "d")
(progn
(setq S (ssget (list
'(-4 . "<OR")
(cons 0 "lwpolyline")
(cons 0 "polyline")
'(-4 . "OR>")
)))
(write-line " 请稍候,正在处理······")
)
)
(setq a 0)
(repeat (sslength S)
(setq entname (ssname S a))
(setq eLayer (cdr (assoc '8 (entget entname))))
(setq bh (cdr (assoc '70 (entget entname))))
(setq wide (cdr (assoc '40 (entget entname))))
(setq elistcord (gxfx_getcordList entname)) ;;原表
(cjdb)
(if (eq (vl-consp clistcord ) T)
(progn
(setq lastcord(last elistcord))
(setq fistcord(nth 0 elistcord))
(setq num 0)
(repeat (- (length elistcord) 1)
(setq num1(nth num elistcord))
(setq num2(nth (+ 1 num) elistcord))
(setq dist(distance num1 num2))
(if (> dist 0.001)
(setq xlistcord(cons num1 xlistcord))
)
(setq num (1+ num))
)
(if (> (distance fistcord lastcord) 0.001)(setq xlistcord(cons lastcord xlistcord)))
(if (and (/= bh 1) (< (distance fistcord lastcord) 0.001))(setq xlistcord(cons lastcord xlistcord))) ;;去闭合处重点
(setq elistcord(reverse xlistcord))
)
)
(if (and (/= bh 1) (eq (vl-consp clistcord ) T))
(progn
(setvar "plinewid" wide)
(command "-layer" "s" elayer "")
(setq f_cord (car elistcord))
(command "pline" )
(foreach elem elistcord (command elem))
(COMMAND)
(setq xlistcord nil)
(entdel entname)
)
)
(if (and (= bh 1) (eq (vl-consp clistcord ) T))
(progn
(setvar "plinewid" wide)
(command "-layer" "s" elayer "")
(setq f_cord (car elistcord))
(command "pline" )
(foreach elem elistcord (command elem))
(COMMAND "c")
(setq xlistcord nil)
(entdel entname)
)
)
(setq a (1+ a))
)
(setvar "plinewid" 0)
(setvar "cmdecho" 1)
)
;;;;;;本程序用于获得实体坐标表
(defun gxfx_getcordList (entname / eList eType subent height
subelist subeCord CordList
subeType elem dxfType

)
(setq eList (entget entName))
(setq cordList 'nil)
(setq eType (cdr (assoc '0 eList)))
(cond ((eq eType "POLYLINE")
(setq subent (entnext entName))
(setq subeList (entget subent))
(setq subeCord (cdr (assoc '10 subeList)))
(while (not (eq subeType "SEQEND"))
(setq CordList (cons subeCord CordList))
(setq subent (entnext subent))
(setq subeList (entget subent))
(setq subeCord (cdr (assoc '10 subeList)))
(setq subeType (cdr (assoc '0 subeList)))
)

);;end cond-1; ((eq eType "LWPOLYLINE")
(setq height 'nil)
(foreach elem eList
(setq dxfType (car Elem))
(if (eq dxfType '38)
(progn
(setq height (cdr elem))
)
)
)
(foreach Elem eList
(setq dxfType (car Elem))
(if (eq dxfType 10)
(progn
(if height
(setq subeCord (append (cdr elem)(list height)))
(setq subeCord
(append (cdr Elem)
(list 0.0)
)

);;;
)
(setq CordList (cons subeCord CordList))
)
)
);;end foreach;
);;;end cond;
((eq eType "LINE")
(foreach elem eList
(setq dxfType (car elem))
(if (or (eq dxftype 11)(eq dxftype 10))
(progn
(setq subeCord (cdr elem));;
(setq cordList (cons subecord cordList))
);;
);;
)
);;end cord_3
);;;end cond

(setq cordList (reverse cordList))

);;end defun
(defun CJDB()
;;旧线坐标表 elistcord 重节点表 clistcord
(setq clistcord nil)
(setq i 0)
(repeat (setq mem1(length elistcord))
(setq jd(nth i elistcord))
(setq shjd(vl-remove jd elistcord))
(setq mem2(length shjd))
(if (> (- mem1 mem2) 1)
(setq clistcord(cons jd clistcord))
)
(setq i (1+ i))
)
) szhjdh@sohu.com
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2025-2-21 03:08 , Processed in 0.140440 second(s), 19 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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