明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1358|回复: 6

[源码] ;;向块中添加中心线

[复制链接]
发表于 2018-6-2 17:11 | 显示全部楼层 |阅读模式
;;向块中添加中心线
(defun c:kl (/ atts blk_lst blkdef blkname l points pts pts_lst ss ss_lst ss1)
    (vl-load-com)
    (setq eh-*error*-bak *error*)
    (defun *error* (msg)
        (setq *error* eh-*error*-bak)
        (setvar "osmode" eh_os_g)
        (vla-endundomark eh_doc_g)
        (setvar "nomutt" 0)
        (setvar "cmdecho" 1)
        (print msg)
    )
   
    (setvar "cmdecho" 0)
    (if (null eh_doc_g)(setq eh_doc_g (vla-get-activedocument (vlax-get-acad-object))))
    (vla-startundomark eh_doc_g)
    (if (< (setq eh_os_g (getvar "osmode")) 16384)
        (setvar "osmode" (+ eh_os_g 16384))
    )
   
    (setq ss (ssget '((0 . "INSERT"))))
    (if (null ss)
        (quit)
    )   
    (setq ss_lst (EH-SS->List ss))
    (foreach x ss_lst
        (setq blkname (EH-Get-EntDxf x 2))   
        (setq blk_lst (cons blkname blk_lst))        
    )
    (foreach blkname blk_lst        
        (if (not
                    (VL-CATCH-ALL-ERROR-P
                        (setq
                            blkdef (VL-CATCH-ALL-APPLY 'vla-item (list
                                                                                                         (vla-get-blocks eh_doc_g)
                                                                                                         blkname
                                                                                                     )
                     )
            )
          )
        )            
            (vlax-for o blkdef                                                            
                (cond
                    ((or (= "AcDbBlockReference" (vla-get-objectname o))
                         (= "AcDbMInsertBlock" (vla-get-objectname o))
                     )                                       
                        (setq atts (vlax-invoke o 'GetAttributes))                        
                        (foreach a atts
                            (setq l (cons (vlax-vla-object->ename a) l))
                        )
                        (setq l (append (listblockent (vla-get-name o)) l))
                    )
                    (t                        
                        (setq l (cons (vlax-vla-object->ename o) l))
                    )
        )
            )
    )                           
        ;;图块内的对象不能独立加入选择集
        ;(setq ss1 (EH-List->SS l))        
        (foreach x l
            (setq pts (EH-ent-9pt x '(1 9)))
            (setq pts_lst (cons (cadr pts) pts_lst))
            (setq pts_lst (cons (car  pts) pts_lst))                        
        )
        (setq pts (EH-Pts-9pt pts_lst '(2 8)))
        (setq pts (list
                                (EH-Vector-Add (car  pts) '(0 -1000 0))
                                (EH-Vector-Add (cadr pts) '(0 1000 0))                           
                            )            
        )                        
    (setq points (vlax-make-safearray vlax-vbDouble '(0 . 3)))  
    (vlax-safearray-fill points (list
                                                                    (caar   pts)
                                                                    (cadar  pts)
                                                                    (caadr  pts)
                                                                    (cadadr pts)
                                                                )  
    )        
        (vla-AddLightweightPolyline blkdef points)
        
    )   
    (vla-Regen eh_doc_g acAllViewports)
    (setq *error* eh-*error*-bak)
    (setvar "osmode" eh_os_g)
    (vla-endundomark eh_doc_g)
    (setvar "nomutt" 0)
    (setvar "cmdecho" 1)   
    (princ)        
) ;defun_end






发表于 2018-6-3 14:20 | 显示全部楼层
学习了 谢谢分享
发表于 2018-6-4 07:54 | 显示全部楼层
谢谢! Gray-wolf 分享学习了!!!!
发表于 2018-6-4 08:12 | 显示全部楼层
缺少自定义函数  EH-SS->List,EH-Get-EntDxf,EH-List->SS,EH-ent-9pt,EH-Vector-Add

发表于 2018-6-4 08:19 | 显示全部楼层
缺少自定义函数
EH-Pts-9pt
发表于 2020-6-3 13:18 | 显示全部楼层
缺少自定义函数
EH-Pts-9pt
 楼主| 发表于 2021-2-14 10:35 | 显示全部楼层
感谢大家的关注,缺少的都是比较基础的通用函数,可以自己写一个就可以了,注意参数的类型和个数以及返回值的类型一致就行了
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-4-24 00:27 , Processed in 0.331256 second(s), 25 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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