明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 586|回复: 1

[提问] 关于图块接线,请大家帮忙,麻烦了!

[复制链接]
发表于 2016-6-14 20:25:41 | 显示全部楼层 |阅读模式
本帖最后由 zhaoboxuan 于 2016-6-15 14:01 编辑

之前GU版主写了一版图块接线代码,现在需要改为"框选图块后,自左向自上之下、然后自下之上,每30个(可调)块为一组,接线方式按组分配"(已增加附图),麻烦各位版主大人,帮调整下,十分感谢
  1. (defun c:tt(/ os ss pl p1 p2)
  2.   (setq os (getvar 'osmode))
  3.   (setvar 'osmode 0)
  4.   (setq ss (ssget '((0 . "insert"))))
  5.   (if ss
  6.     (progn
  7.       (setq pl (GXL-GETSSBOX ss)
  8.             p1 (car pl)
  9.             p2 (cadr pl)
  10.             ss (GXL-SEL-SS->LIST ss)
  11.             )
  12.     ;;;此处画一个圆,图块投影到园上排序
  13.       (command "_pline" p1 "a" "s" (list (car p1) (cadr p2)) p2 "s" (list (car p2) (cadr p1)) p1 "")
  14.       (setq en (entlast))
  15.       (setq ss (vl-sort ss '(lambda (a b)
  16.                            (< (vlax-curve-getParamAtPoint en (vlax-curve-getclosestpointto en (gxl-dxf a 10)))
  17.                               (vlax-curve-getParamAtPoint en (vlax-curve-getclosestpointto en (gxl-dxf b 10)))
  18.                               )
  19.                            )
  20.                         )
  21.             )
  22.         (command "_pline")
  23.         (mapcar 'command (mapcar '(lambda (X) (gxl-dxf x 10)) ss))
  24.       (command "")
  25.       (entdel en)
  26.       )
  27.     )
  28.   (setvar 'osmode os)
  29.   (princ)
  30.   )
  31. ;; gxl-GetssBox 取得选择集的实体外矩形框
  32. (defun gxl-GetssBox        (ss / maxpt maxptlst minpt minptlst obj x ss1)
  33.   (setq ss1 (gxl-Sel-SS->List ss))
  34.   (foreach x ss1
  35.     (setq obj (vlax-ename->vla-object x))
  36.     ;(setq minPt (vlax-make-safearray vlax-vbdouble '(0 . 2)))
  37.     ;(setq maxPt (vlax-make-safearray vlax-vbdouble '(0 . 2)))
  38.     (vla-GetBoundingBox Obj 'minpt 'maxpt) ; 得到包围框
  39.     (setq minPt (vlax-safearray->list minPt))
  40.     (setq maxPt (vlax-safearray->list maxPt))
  41.     (setq minPtlst (append minPtlst (list minPt)))
  42.     (setq maxPtlst (append maxPtlst (list maxPt)))
  43.   ) ;_ 结束foreach
  44.   (setq        minPt (list (apply 'min (mapcar 'car minPtlst))
  45.                     (apply 'min (mapcar 'cadr minPtlst))
  46.                     0
  47.               ) ;_ 结束list
  48.   ) ;_ 结束setq
  49.   (setq        maxPt (list (apply 'max (mapcar 'car maxPtlst))
  50.                     (apply 'max (mapcar 'cadr maxPtlst))
  51.                     0
  52.               ) ;_ 结束list
  53.   ) ;_ 结束setq
  54.   ;(command "rectang" minPt maxPt)
  55. (list minPt maxPt)
  56. ) ;_ 结束defun

  57. (defun gxl-Sel-SS->List        (ss / i s )
  58.     (if ss
  59.   (repeat (setq i (sslength ss))
  60.   (setq s (cons (ssname ss (setq i (1- i))) s))
  61.     )
  62.     )
  63. )
  64. ;;;==================================================================
  65. ;;;(gxl-dxf ent i )取出图元索引i对应的值
  66. ;;;==================================================================
  67.   (defun gxl-dxf (ent i)
  68.     (cond ((= (type ent) 'ename)
  69.             (cdr (assoc i (entget ent)))
  70.              )
  71.           ((= (type ent) 'list)
  72.            (cdr (assoc i ent))
  73.            )
  74.     ) ;_ if
  75.   )

[/code]

本帖子中包含更多资源

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

x
 楼主| 发表于 2016-6-14 20:39:14 | 显示全部楼层
大侠们棒棒忙,这个对我非常重要,麻烦各位了
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2025-5-20 08:41 , Processed in 0.167427 second(s), 26 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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