明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 2585|回复: 14

[讨论] CASS高程自动避让思路,希望各位老师能给个意见

[复制链接]
发表于 2013-9-11 16:04 | 显示全部楼层 |阅读模式
能不能按图上的方法用POLYGON命令画出指定的多边形,然后提取多边形的坐标逐一移动然后判断是否与实体相交!请各位能人高手老师指点一下!

还有,能不能换作画圆然后按角度计算在圆的边界线的坐标然后移动呢?这样的方法跟论坛里已经公开的“高程自动避让"中的方法,在批量处理时间上会不会相差很大呢?求教!!!!

本帖子中包含更多资源

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

x
发表于 2013-9-12 09:17 | 显示全部楼层
原理差不多,处理速度都不敢恭维。而且你的这个想法不成熟,移到左边怎么办?是不是挡住了点?
 楼主| 发表于 2013-9-12 09:39 | 显示全部楼层
soly2006 发表于 2013-9-12 09:17
原理差不多,处理速度都不敢恭维。而且你的这个想法不成熟,移到左边怎么办?是不是挡住了点?

我的想法是这样,POLYGON几次,第一次半径0.45,如果还是与实体相交,执行第二次POLYGON半径0.70,如此类推,第三次(第二次*2)、第四次(第三次*2)、第五次(第四次*2)这样!还有第一次的POLYGON边数可以设置为10、20、30、40都行,之后也可以边数类推!
如果,时间比不上之前那位老师的“高程自动移位”的少的话!也只好另想方法,或者放弃了!
谢谢你,老师!
发表于 2013-9-12 20:04 | 显示全部楼层
这个题目,本论坛有的啊!
发表于 2013-9-16 12:21 | 显示全部楼层
陈亚娣 发表于 2013-9-12 09:39
我的想法是这样,POLYGON几次,第一次半径0.45,如果还是与实体相交,执行第二次POLYGON半径0.70,如此类 ...

按增量值不断扩大圆圈,分4个象限判断文字矩形框内是否有相交,找到空位即移动文字
 楼主| 发表于 2013-9-16 15:30 | 显示全部楼层
无名指 发表于 2013-9-16 12:21
按增量值不断扩大圆圈,分4个象限判断文字矩形框内是否有相交,找到空位即移动文字

你好,能不能可以给提供段代码啊?
因为我还算个初手,有些代码还不能完全自写!我想要是判断文字相交的代码!
发表于 2013-9-18 19:31 | 显示全部楼层
(while ss1  ;只要高程点选择集存在
   (repeat (sslength ss1)
     (setq data1 (entget (ssname ss1 n) '("*")));获取主对象(高程点块)的群码表
     (setq data2 (entget (entnext (ssname ss1 n)) '("*")));获取子对象(高程注记值)的群码表
     (setq l (nth 0 (cadr (textbox data2)))) ;根据注记值获取字长
     (setq h (cdr (assoc 40 data2)))        ;根据注记值获取字高      
     (setq blk_pt (cdr (assoc 10 data1)))        ;高程点块的插入坐标
     (command "zoom" "c" blk_pt 30 )
     (setq text_pt1 (cdr (assoc 10 data2)))        ;高程文本值的左下角插入点坐标
     (setq text_pt2 (list (+ (nth 0 text_pt1) l) (+ (nth 1 text_pt1) h)));高程文本值的右上角点坐标
     (setq s1 (ssget "c" text_pt1 text_pt2 '((-4 . "<not")(8 . "GCD")(-4 . "not>"))));以文本框框选除GCD之外的选择集
     (if (/= s1 nil) ;意即框内仍有其它选择物,也就是高程点压线了
      (progn
         ;以下是一个依次扩大范围不断寻找空位的过程  
         ;(setq ii (/ 2 kkk));设定范围框的增量值
         ;(while (> ii 0)
         ;(calwp blk_pt ii 12);以高程点块为中心建立多边形选择框
        (setq ii 0);设定范围框的增量值
        (while (< ii 0.6)      
          (calwp blk_pt (+ (* h 0.2) ii) 32);以高程点块为中心建立多边形选择框
          (setq i 0)
          (repeat (length wppt)
            ;第八次循环(第三象项)
            (if (and (<= (car (nth i wppt)) (nth 0 blk_pt))  (<= (cadr (nth i wppt)) (nth 1 blk_pt)));第三象项
              (progn
                (setq pt_l (list (- (car (nth i wppt)) (* 1 l)) (- (cadr (nth i wppt)) h)))
                (setq pt_r  (nth i wppt))                        
              );progn
            );if
            
           ...................................
            <按象限定义文本框,请自由编写>
           ....................................
            
            (setq s2 (ssget "c" pt_l pt_r))
                 (if (= s2 nil);如果找到空位
                   (progn
                     (setq just_pt (list (nth 0 pt_l) (+ (nth 1 pt_l) (/ h 2)) ))
                           (setq data2        (subst (cons 11 just_pt) (assoc 11 data2) data2))
                           (entmod data2)        ;更改子对象
                           (entupd (ssname ss1 n)) ;更改主对象
                            ;(command "_rectang" pt_l  pt_r "")
                            (setq ii 10);如找到空位则设ii等于10,因大于0.6,借此跳出循环直接进入下一个点的处理
                   );p
                    (setq i (1+ i));如果没找到空位,则开始判断下一个顶点
                 );if
          );r
          (setq ii (+ ii 0.05));多边形选择框外扩增值数,扩大一圈继续找空位处理
         );w ii
        );p
      );if s1
     (setq n (1+ n));开始处理下一个高程点
     (princ (strcat "\n正在处理第 " (itoa n) " 个高程注记,还剩下" (itoa (- (sslength ss1) n)) "个,请耐心等待!"))
    );r
    (setq ss1 nil s1 nil s2 nil)
   );w           
发表于 2013-9-18 19:34 | 显示全部楼层
只给出一部分,不是小气、保守。只是我自己感觉这个程序还不完善,主要是处理的速度太慢了,不好意思拿出手,只当抛砖引玉,仅供参考吧。希望有更好的,期盼中......
发表于 2013-9-18 22:30 | 显示全部楼层
给你一个好东东,在网上淘的

本帖子中包含更多资源

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

x
 楼主| 发表于 2013-9-22 08:33 | 显示全部楼层
无名指 发表于 2013-9-18 22:30
给你一个好东东,在网上淘的

谢谢,这个程序很好哦!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-3-29 07:51 , Processed in 0.302544 second(s), 27 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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