明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
楼主: 半听可乐

编程申请:以组合图元中心旋转并缩放

  [复制链接]
 楼主| 发表于 2013-1-6 22:59 | 显示全部楼层
kwok 发表于 2013-1-6 22:45
cad要装有ET,试试

又要装个插件啊~~~是不是完整版的CAD2004有et工具?

点评

ET每个版本都有,是单独安装的。  发表于 2013-1-7 08:16
回复

使用道具 举报

发表于 2013-1-6 23:03 | 显示全部楼层
半听可乐 发表于 2013-1-6 22:59
又要装个插件啊~~~是不是完整版的CAD2004有et工具?

一般的cad都有ET这个工具的,你装的时候自定义装就可选上自动装上了,如果没有装到也可以加装上的,.
回复

使用道具 举报

发表于 2013-1-6 23:06 | 显示全部楼层
能改一下,能统计出各种图元的数量并写道图中更好
回复

使用道具 举报

发表于 2013-1-7 06:52 | 显示全部楼层


本帖子中包含更多资源

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

x

点评

很给力,能把伪源码“去伪存真”就好了~~~  发表于 2013-1-7 09:40
回复

使用道具 举报

发表于 2013-1-7 10:46 | 显示全部楼层
楼主这和普通的缩放有什么区别吗?
回复

使用道具 举报

 楼主| 发表于 2013-1-7 14:10 | 显示全部楼层
Gu_xl 发表于 2013-1-6 16:22
单个组合中心缩放旋转很容易,若要是批量执行,恐怕比较难,难点在程序如何在你选择的一堆图元里自动实现分 ...

G版,能不能帮我写个不需要装et工具箱就能用的程序?
回复

使用道具 举报

发表于 2013-1-8 10:15 | 显示全部楼层
能否先按普通命令旋转缩放后,再计算插入点或文本中心点偏离原来的值返回去。
回复

使用道具 举报

发表于 2013-12-24 17:34 | 显示全部楼层
看了院长的程序,胡乱拼凑了一个程序,不要钱不要钱
  1. (vl-load-com)
  2. (defun c:ttaa ()
  3.     (setq xx (getreal "\n 请输入横向范围<5000>"))
  4.     (if (not xx) (setq xx 5000))
  5.     (setq yy (getreal "\n 请输入纵向范围<5000>"))
  6.     (if (not yy) (setq yy 5000))
  7.     (setq jd (getreal "\n 请输入旋转角度<-47.7>"))
  8.     (if (not jd) (setq jd -47.7))
  9.     (setq bl (getreal "\n 请输入缩放比例<0.41667>"))
  10.     (if (not bl) (setq bl 0.41667))
  11.     (setq i -1)
  12.   (if (setq ss (ssget '((0 . "text"))))
  13.     (while (setq s1 (ssname ss (setq i (1+ i))))
  14.       (setq ssbox (GetSSBoundingbox s1))
  15.       (setq midpt (mapcar '(lambda (a b) (/ (+ a b) 2)) (car ssbox) (cadr ssbox)))
  16.       (setq pt2 (list (- (car midpt) xx) (- (cadr midpt) yy) 0.0))
  17.       (setq pt3 (list (+ (car midpt) xx) (+ (cadr midpt) yy) 0.0))
  18.       (if (setq ss1 (ssget "w" pt2 pt3))
  19.   (progn
  20.     (setq  ss1 (ssadd s1 ss1))
  21.           (setq ssbox1 (GetSSBoundingbox ss1))
  22.           (setq midpt1 (mapcar '(lambda (a b) (/ (+ a b) 2)) (car ssbox1) (cadr ssbox1)))  
  23.     (command ".rotate" ss1 "" midpt1 jd)
  24.     (command ".Scale" "P" "" midpt1 bl)
  25.   )
  26.       )
  27.     )
  28.   )
  29. )

  30. (defun GetSSBoundingbox (sse / ss i ssn ll rr box ptlist ssbox)
  31.   (if (= 'ENAME (type sse))
  32.     (progn (setq ss (ssadd)) (ssadd sse ss))
  33.     (setq ss sse))
  34.   (if ss
  35.     (progn
  36.       (setq i -1)
  37.       (repeat (sslength ss)
  38.         (setq ssn (ssname ss (setq i (1+ i))))
  39.         (vla-GetBoundingBox (vlax-ename->vla-object ssn) 'll 'rr)  ;得到对象的包围盒
  40.         (setq box (list (vlax-safearray->list ll) (vlax-safearray->list rr)))
  41.         (setq ptlist (append ptlist box))
  42.         )
  43.       (setq ssbox (mapcar '(lambda (x) (apply 'mapcar (cons x ptlist))) (list 'min 'max)))
  44.       )
  45.     )
  46.   )

评分

参与人数 1明经币 +1 收起 理由
669423907 + 1 很给力!

查看全部评分

回复

使用道具 举报

发表于 2018-9-12 00:08 | 显示全部楼层
发现楼主的需求大部分是我想要的
回复

使用道具 举报

发表于 2018-9-14 23:42 | 显示全部楼层
太厉害了真的不错
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-3-28 17:50 , Processed in 0.305742 second(s), 24 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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