明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1972|回复: 8

如何编一个能查出“靠点靠线”的程序,把端点未相互捕捉上的用圆画出来

[复制链接]
发表于 2004-8-19 15:44:00 | 显示全部楼层 |阅读模式
请大家帮忙:


我做的是地形图,


如何编一个能查出“靠点靠线”的程序,把端点未相互捕捉上的用圆画出来.


(1)例图2:粉线(房子)要捕捉到黄线的端点上


(2)例图1:图边的线要捕捉到内图廓线上


本帖子中包含更多资源

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

x
 楼主| 发表于 2004-8-20 09:20:00 | 显示全部楼层
为什么没有人帮助我。


如果能帮我找一下思路也可以。


多谢!
发表于 2004-8-20 11:52:00 | 显示全部楼层
只处理"LINE"的问题
  1. (defun exztempl2( ss /)
  2.          (command "layer" "m" "ZTEMPL" "c" 2 "ZTEMPL" "")
  3.          (setq i 0)
  4.          (repeat (sslength ss)
  5.                (setq ename (ssname ss i))
  6.                (setq endata (entget ename))
  7.                (setq enlay (cdr (assoc 8 endata)))
  8.                (setq p1 (cdr (assoc 10 endata)))
  9.                (setq p2 (cdr (assoc 11 endata)))
  10.                (setq j 0)
  11.                (setq dtmin nil)
  12.                (repeat (- (sslength ss) 0)
  13.                      (setq eename (ssname ss j))
  14.                      (setq eedata (entget eename))
  15.                      (setq eenlay (cdr (assoc 8 eedata)))
  16.                      (setq p3 (cdr (assoc 10 eedata)))
  17.                      (setq p4 (cdr (assoc 11 eedata)))
  18.    
  19.                (if (and (/= i j)(= enlay eenlay))
  20.                        (progn
  21.                              (setq px (inters p1 p2 p3 p4))
  22.                              (setq px2 (inters p1 p2 p3 p4 nil))                             (if (/= px nil)
  23.                                      (progn
  24.                                            (setq dt1 (distance p3 px))
  25.                                            (setq dt2 (distance p4 px))
  26.                                            (setq dtmin (min dt1 dt2))
  27.                                            (setq mark (< dtmin 0.0000001))
  28.                                            (if (and (< dtmin dtset)(/= mark T))
  29.                                                    (progn
  30.                                                          (if (> dt1 dt2)
  31.                                                                  (command "circle" p4 dtset)
  32.                                                                  (command "circle" p3 dtset)
  33.                                                          )
  34.                                                    )
  35.                                            )
  36.                                      )
  37.                              )                 
  38.                
  39.                              (if (and (= px nil) (/= px2 nil))                                           (progn
  40.                                            (setq px (inters p1 p2 p3 p4 nil))
  41.                                            (setq pxx (inters p3 px p1 p2))
  42.                                            (if (/= pxx nil)      
  43.                                                    (progn
  44.                                                          (setq dt1 (distance p3 pxx))
  45.                                                          (setq dt2 (distance p4 pxx))
  46.                                                          (setq dtmin (min dt1 dt2))
  47.                                                          (setq mark (< dtmin 0.0000001))
  48.                                                          (if (and (< dtmin dtset)(/= mark T))
  49.                                                                  (progn
  50.                                                                        (if (< dt1 dt2)
  51.                                                                                  (command "circle" p3 dtset)
  52.                                                                                  (command "circle" p4 dtset)
  53.                                                    
  54.                                                                        )
  55.                                                                  )
  56.                                                            )
  57.                                                    )
  58.                                            )
  59.                                      )
  60.                              )
  61.                        )
  62.                  )
  63.            
  64.                  (setq j (+ j 1))
  65.              )
  66.              (setq i (+ i 1))         )(prin1)
  67. )
  68. (defun c:xxx()         (setvar "cmdecho" 0)
  69.          (setvar "blipmode" 0)
  70.          (setq sel (getvar "osmode"))
  71.          (setvar "osmode" 0)
  72.          (setvar "filletrad" 0)
  73.          (setq cly (getvar "clayer"))
  74.            
  75.          (setq dtset (getreal "\nSetup join distance?"))
  76.          (setq ss1 (ssget))
  77.          (setq ss1 (ssget "P" '((0 . "LINE"))))
  78.          
  79.          (setq pkx (getvar "pickbox"))
  80.          (setvar "pickbox" 0)
  81.    
  82.          (if (/= ss1 nil)(exztempl2 ss1))         (setvar "osmode" sel)
  83.          (setvar "pickbox" pkx)
  84.          (command "layer" "s" cly "") (prin1)
  85. )
发表于 2004-8-20 17:13:00 | 显示全部楼层
楼上的你也是测绘的啊


可以和我联系啊


我的qq 114743023
发表于 2004-8-20 20:14:00 | 显示全部楼层
这种情况很麻烦,接边线比较多,而且线的两端都在内图廓线上(特别是等高线)时候算法比较复杂,容易出错
 楼主| 发表于 2004-8-25 09:00:00 | 显示全部楼层
本帖最后由 作者 于 2004-9-1 9:57:35 编辑

谢谢3楼朋友!
 楼主| 发表于 2004-9-1 09:59:00 | 显示全部楼层
wb0815朋友你什么时间上网啊!


有机会我们联系
发表于 2004-9-1 12:36:00 | 显示全部楼层
lhr


我在网上


你可以随时找我
发表于 2004-9-1 13:59:00 | 显示全部楼层
能不能相互捕捉还要看pickbox设置,这个可是个变数啊
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-11-18 19:59 , Processed in 0.199536 second(s), 26 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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