明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 4916|回复: 25

自动连上

  [复制链接]
发表于 2012-8-7 14:45:08 | 显示全部楼层 |阅读模式
各位大虾,
我想把圆灯缩小一半后灯两边的连线还是连上的,但每个灯的位还不能变动它,有没有更块的办法.烟为以前酒詀的灯做大了
现在又想改小,所以要缩小

本帖子中包含更多资源

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

x
"觉得好,就打赏"
还没有人打赏,支持一下
发表于 2012-8-7 15:49:30 | 显示全部楼层
本帖最后由 Andyhon 于 2012-8-7 17:44 编辑


  1. (Defun Cp2txt_Aux (ent pto)
  2.    (command "Scale" ent "" pto fac)
  3.    (command "change" (mapcar '- pto xx) "" (mapcar '- pto dda))
  4.    (command "change" (mapcar '+ pto xx) "" (mapcar '+ pto dda))
  5. )


  6. ;;; For test only

  7. (Defun C:Cp2txt ()
  8.    (setq ss (ssget '((2 . "ltg"))))
  9.    (setq fac (getreal "\n 比率: "))   ; say 0.5

  10.    (setq i 0)
  11.    (setq ee (ssname ss i)
  12.         pts (acet-ent-geomextents ee)           ; acet-ent-geomextents / Required ET
  13.          xx (- (caadr pts) (caar pts))
  14.          dd (* xx (- 1 fac) 0.5)
  15.         dda (list dd 0)
  16.          xx (list (* xx 0.5) 0)
  17.    )
  18.    (while (setq ee (ssname ss i))
  19.      (Cp2txt_Aux ee (apply 'mid_pt pts))        ; mid_pt 站内搜
  20.      (setq i (1+ i))
  21.      (and
  22.        (setq ee (ssname ss i))
  23.        (setq pts (acet-ent-geomextents ee))
  24.    ) )
  25. )

发表于 2012-8-7 16:15:13 | 显示全部楼层
快捷键是什么呀,没反应呢

点评

Cp2txt  发表于 2012-8-7 17:05
发表于 2012-8-7 17:07:43 | 显示全部楼层
缺少函数吧:acet-ent-geomextents
发表于 2012-8-7 17:13:43 | 显示全部楼层
需要安装ET
 楼主| 发表于 2012-8-7 17:34:26 | 显示全部楼层
; 错误: *error* 函数中出错函数被取消
不像四楼所说的那样
但出现了新的问题

点评

Sorry!,已订正  发表于 2012-8-7 17:47
发表于 2012-8-7 18:36:27 | 显示全部楼层



本帖子中包含更多资源

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

x
发表于 2012-8-7 19:49:47 | 显示全部楼层
  1. (defun ss2lst (ss / n e lst)
  2. (repeat (setq n(sslength ss))
  3.   (setq lst (cons (ssname ss (setq n (1- n))) lst))
  4. )
  5. lst
  6. )
  7. (defun wbk(e / L_djx lst)
  8.     (vla-getboundingbox (vlax-ename->vla-object e) 'minp 'maxp)
  9.     (setq minp (reverse(cdr(reverse(vlax-safearray->list minp))))
  10.           maxp (reverse(cdr(reverse(vlax-safearray->list maxp))))
  11.           xminymaxp(list(car minp)(cadr maxp))
  12.           xmaxyminp(list(car maxp)(cadr minp))
  13.           lst(list minp xmaxyminp maxp xminymaxp minp)
  14.           )
  15.     (entmake (append(list'(0 . "LWPOLYLINE") '(100 . "AcDbEntity") '(100 . "AcDbPolyline")
  16.                           (cons 90 (length lst)))(mapcar '(lambda (pt)(cons 10 pt)) lst ))
  17.     )
  18.     (setq ple(entlast))
  19.     (ssadd ple pless)
  20.     (setq L_djx(distance minp maxp)
  21.           midp (polar minp (angle minp maxp)(/ L_djx 2))
  22.           )
  23. )
  24. (defun c:sfbb(/ kname scnum ss pless liness linelst insertss
  25.                 insertlst n inserte n cp1 cp2 midp clst elst ple
  26.                 minp xmaxyminp maxp xminymaxp midp ple  )
  27.   (command "undo" "be")
  28.   (setvar 'cmdecho 0)
  29.   (if (setq insertss (ssget'((0 . "insert")(2 . "ltg"))))
  30.     (progn
  31.       (setq pless(ssadd))
  32.       (setq pick(getvar 'pickbox))
  33.       (setq scnum(getreal"\n请输入缩放比例<0.5>"))
  34.       (if(not scnum)(setq scnum 0.5))
  35.       (repeat (setq n(sslength insertss))
  36.             (vla-getboundingbox (vlax-ename->vla-object
  37.             (setq inserte(ssname insertss (setq n(1- n))))) 'minp 'maxp)
  38.             (setq cp1 (mapcar '(lambda(x)(- x pick))(vlax-safearray->list minp))
  39.                   cp2 (mapcar '(lambda(x)(+ x pick))(vlax-safearray->list maxp))
  40.                   midp (polar cp1 (angle cp1 cp2)(/ (distance cp1 cp2) 2))
  41.                   )
  42.         (ssget "c" cp1 cp2)
  43.         (setq clst(cons(cons inserte (ss2lst(ssget "p" '((0 . "line")))))clst))
  44.         (command "scale" inserte "" midp scnum)
  45.        )
  46.        (repeat (setq n(length clst))
  47.          (setq elst(nth (setq n(1- n)) clst))
  48.          (wbk (car elst))
  49.          (command "zoom" "o" ple "")
  50.          (foreach x (cdr elst)
  51.            (if (< (distance (setq sp (vlax-curve-getStartPoint x)) midp)
  52.                   (distance (setq ep (vlax-curve-getendPoint   x)) midp)
  53.                   )
  54.              (command "extend" ple "" (nentselp(vlax-curve-getStartPoint x))"")             
  55.              (command "extend" ple "" (nentselp(vlax-curve-getendPoint   x))"")
  56.              )
  57.          )
  58.          (command "zoom" "p" )
  59.        )
  60.       )
  61.     )
  62.   (command "erase" pless "")
  63.   (command "undo" "e")
  64.   (princ)
  65.   )
发表于 2012-8-7 20:15:46 | 显示全部楼层
yjr111 发表于 2012-8-7 19:49

谢谢分享。
没有到达楼主的要求,线条未连接到改变后的圆

点评

样图我这里测试通过。。。  发表于 2012-8-7 20:24
发表于 2012-8-7 20:27:16 | 显示全部楼层
Andyhon 发表于 2012-8-7 15:49

谢谢分享!
试了试,好像有误
比率: 0.5
【错误】no function definition: nil!*取消*
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2025-5-22 03:43 , Processed in 0.203669 second(s), 29 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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