明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 47080|回复: 157

批量交点插入块(支持选块样板,多段线、曲线、直线)

    [复制链接]
发表于 2011-12-14 13:07 | 显示全部楼层 |阅读模式
本帖最后由 【KAIXIN】 于 2011-12-17 16:03 编辑









本帖子中包含更多资源

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

x

点评

插入放大或缩小后的块不好用,插入的块都是按1比1的。不是按当前块比例插入的。版主能否修改一下  发表于 2012-12-6 12:51

评分

参与人数 3明经币 +1 金钱 +15 收起 理由
断面CAD + 5 赞一个!
longlongfe + 1 + 5 赞一个!需要的好东西 谢谢
display18 + 5 一直是我所需...顶起

查看全部评分

发表于 2015-12-25 13:27 | 显示全部楼层
hehoubin 发表于 2012-11-18 00:21
能放子程序SSINTERS的源码吗

  1. (defun ssinters (ss / pts en1 en2)
  2.   (while (> (sslength ss) 1)
  3.     (setq en1 (ssname ss 0))
  4.     (ssdel en1 ss)
  5.     (setq n (sslength ss))
  6.     (repeat n
  7.       (setq en2 (ssname ss (setq n (1- n))))
  8.       (setq pts (append pts (Curveinters en1 en2)))
  9.       )
  10.     )
  11.   pts
  12.   )
  13.     (defun Curveinters (en1 en2 / pl pts)
  14.   (setq pl  (vlax-invoke (vlax-ename->vla-object en2) 'IntersectWith (vlax-ename->vla-object en1) acExtendNone))
  15.   (while pl
  16.     (setq pts (append pts (list (list (car pl) (cadr pl) (caddr pl))))
  17.    pl (cdr (cdr (cdr pl)))
  18.    )
  19.     )
  20. pts
  21.   )
回复 支持 2 反对 0

使用道具 举报

 楼主| 发表于 2011-12-17 16:07 | 显示全部楼层
半片香 发表于 2011-12-17 15:51
讲多句,楼主无形中帮助搞定了一个大工程问题,
小可是施工单位做深化设计的,属于参数化建筑最底层一环, ...

嗯,不用客气!我也知道这个程序可以帮助很多人!因为大家一直在提问这个程序!

就是因为可以帮助人,我才.....

因其实这个对我自己一点用也没有!

程序已更新!可以保留你的捕捉,欢迎试试!
回复 支持 1 反对 0

使用道具 举报

发表于 2023-11-1 19:37 | 显示全部楼层
这个源码好像和你的不完全一样
(defun c:t1 ()

(vl-load-com)
(setq cmd (getvar "cmdecho"))
(setvar "cmdecho" 0 )
(setq blockent (ssname (ssget "L") 0))
(command "select" "")

  (setvar "osmode" 15359)
  (princ "\n★功能:在批量图元的相交点处插入块")
  (princ "\n请选择多段线、样条曲线、直线、圆、圆弧或椭圆:")
  (command "undo" "be")
  (if (not (setq ss (ssget '((0 . "*LINE,ARC,CIRCLE,ELLIPSE")))))
    (progn (princ "\n提示:未选取图元,程序退出。\n") (exit))
  )
  (setq acad (vlax-get-acad-object))
  (setq acaddocument (vla-get-activedocument acad))
  (setq mspace (vla-get-modelspace acaddocument))



  (setq blockname (cdr (assoc 2 (entget blockent))))
  (setq blockX (cdr (assoc 41 (entget blockent))))

  (setvar "osmode" 0)
  (setq ptlist (ssinters ss))
  (foreach pt ptlist
    (vla-insertblock
      mspace
      (vlax-3d-point pt)
      blockname
      blockX
      blockX
      blockX
      0
    )
  )
  (command "undo" "e")
  (setvar "osmode" 15359)
  (princ)
)

(defun ssinters (ss / i num obj1 obj2 j interpts ptlist)
  (setq i 0 num (sslength ss))
  (while (< i (1- num))
    (setq obj1 (ssname ss i)
          obj1 (vlax-ename->vla-object obj1)
          j    (1+ i))
    (while (< j num)
      (setq obj2     (ssname ss j)
            obj2     (vlax-ename->vla-object obj2)
            interpts (vla-intersectwith obj1 obj2 0)
            interpts (vlax-variant-value interpts))
      (if (> (vlax-safearray-get-u-bound interpts 1) 0)
        (progn
          (setq interpts (vlax-safearray->list interpts))
          (while (> (length interpts) 0)
            (setq ptlist (cons (list (car interpts) (cadr interpts) (caddr interpts)) ptlist))
            (setq interpts (cdddr interpts)))
        )
      )
      (setq j (1+ j))
    )
    (setq i (1+ i))
  )
  ptlist
)
 楼主| 发表于 2011-12-14 13:23 | 显示全部楼层
占个位置
发表于 2011-12-14 14:06 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
发表于 2011-12-14 17:39 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
发表于 2011-12-14 19:25 | 显示全部楼层
很好的......
 楼主| 发表于 2011-12-14 19:26 | 显示全部楼层
500w008 发表于 2011-12-14 17:39
顶下 有了 顶下 有了

  多多支持,好程序不断!
发表于 2011-12-14 19:54 | 显示全部楼层
本帖最后由 完整武器 于 2011-12-14 19:56 编辑

不错 收藏好该用的时候就可以拿出来了
发表于 2011-12-15 10:52 | 显示全部楼层
支持一下...
发表于 2011-12-17 10:48 | 显示全部楼层
超级好用,但是发现问题:

1、如果变换为UCS的话,插入块有问题
2、如果一张图里要插入两种块,,它搞不定
 楼主| 发表于 2011-12-17 10:53 | 显示全部楼层
半片香 发表于 2011-12-17 10:48
超级好用,但是发现问题:

1、如果变换为UCS的话,插入块有问题

这个程序是读取所有交点,用块的基点插入,跟UCS没有关系

也就是说:插入后,块的基点就是交点,不知你的是什么情况?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-4-20 07:22 , Processed in 0.317699 second(s), 30 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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