张和平 发表于 2013-3-24 19:08:30

[急求]自动识别两个半圆及自动缩放



如上图,我现在有大量的这种东西要进行缩放,但不是块,圆也是两个半圆拼起来的。
我的要求是:
1、能够批量进行;
2、能够识别两个半圆拼起来的这个圆,并对这个圆以及其内部的内容进行缩放,缩放基点是这个原因的圆心;
3、要求对每个这样的元素分别缩放;
4、缩放系数先定为2,如果你能提供lsp文件的画我自己来改也行。
急用急用。大神们出手帮帮忙。

ll_j 发表于 2013-3-24 19:50:55

看这样子好像是打散的圆环(dount),急用就请到我的网络U盘去下载一个CDN.lsp试试,不保证成功,但可以一试,在家里,手上东西不全,程序就不写了。

操作步骤:
先用PEdit的M模式把这些半圆连接成整的多义线(Pe-y-j-c),然后使用cdn.lsp。

张和平 发表于 2013-3-24 21:02:12

ll_j 发表于 2013-3-24 19:50 static/image/common/back.gif
看这样子好像是打散的圆环(dount),急用就请到我的网络U盘去下载一个CDN.lsp试试,不保证成功,但可以一试 ...

额。。。这样的话有点慢了。。我一个个sc也可以了。。。啊哦

yjr111 发表于 2013-3-24 22:03:27

试试我的组合物体选择

张和平 发表于 2013-3-24 22:09:30

yjr111 发表于 2013-3-24 22:03 static/image/common/back.gif
试试我的组合物体选择

?????长老,具体呢?

张和平 发表于 2013-3-24 22:44:51

yjr111 发表于 2013-3-24 22:03 static/image/common/back.gif
试试我的组合物体选择

找到了您的组合物体选择,但是:1、不能同时选择圆内的元素,2、不能选择缩放基点

张和平 发表于 2013-3-24 22:48:23

yjr111 发表于 2013-3-24 22:03 static/image/common/back.gif
试试我的组合物体选择

不过能很大程度上提高我的效率,,非常感谢

张和平 发表于 2013-3-25 09:37:06

yjr111 发表于 2013-3-24 22:03 static/image/common/back.gif
试试我的组合物体选择

找到过您发布源码的那个帖子,但是好像已经找不到下载的地方了么

zml84 发表于 2013-4-30 14:25:07

本帖最后由 zml84 于 2013-4-30 14:31 编辑

;;;问题来源:http://bbs.mjtd.com/forum.php?mod=viewthread&tid=100648;;;功能:两对扣半圆识别
;;;日期:zml84 于 2013-04-30
(defun c:tt ()
;;1 提取圆弧信息
(setq        lst '()
        i   0
)
(if (setq ss (ssget '((0 . "ARC"))))
    (repeat (sslength ss)
      (setq en        (ssname ss i)
          ent        (entget en)
      )
      (setq pt        (cdr (assoc 10 ent))
          r        (cdr (assoc 40 ent))
          lst        (cons (list pt r en) lst)
      )
      (setq i (1+ i))
    )
)
;;(princ lst)

;;2 成对匹配
(setq lst2 '())
(while lst
    (setq lst_new '()
          tmp (car lst)
    )
    (foreach x (cdr lst)
      (if (and (equal (car x) (car tmp) 1e-4)
             (equal (cadr x) (cadr tmp) 1e-4)
          )
        (setq tmp (append tmp (cddr x)))
        (setq lst_new (cons x lst_new))
      )
    )
    (setq lst2 (cons tmp lst2)
          lstlst_new
    )
)
;;(princ lst2)

;;3 缩放操作
(command "_.undo" "be")
(foreach tmp lst2
    (setq pt (car tmp)
          r(cadr tmp)
    )
    (setq pt(trans pt 0 1)
          pt1 (polar pt (* 0.25 pi) r)
          pt2 (polar pt (* 1.25 pi) r)
    )
    (if        (setq ss (ssget "c" pt1 pt2 '((0 . "text"))))
      (progn
        (foreach en (cddr tmp)
          (ssadd en ss)
        )
        (command "SCALE" ss "" "non" pt 2)
      )
    )
)
(command "_.undo" "e")

;;
(princ)
)

张和平 发表于 2013-4-30 21:59:08

zml84 发表于 2013-4-30 14:25 static/image/common/back.gif


感谢回复。但是我试了一下,貌似不能缩放呢,,不知是何原因。。。
页: [1]
查看完整版本: [急求]自动识别两个半圆及自动缩放