明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 2753|回复: 12

求程序,将选择的封闭pl线(能多选)内长度大于100的line线改到“临时图层5”

  [复制链接]
发表于 2011-5-9 23:45 | 显示全部楼层 |阅读模式
1明经币
本帖最后由 lengliqun 于 2011-5-9 23:46 编辑

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

最佳答案

查看完整内容

;感谢诸位分享源码程序 ;网上找到求各顶点列表的程序 ;引用yshf 的源码程序 ;AUTOCAD 2008 下测试O.K. ;将封闭pl线内长度大于100的line置“临时图层5”。 ;en各顶点列表自己去弄,网上多得是。 (defun c:ccc () (setq cm (getvar "cmdecho")) (setvar "cmdecho" 0) (if (setq ssa (ssget '((0 . "LWPOLYLINE") (70 . 1)))) (progn (setq i 0 n (sslength ssa)) (repeat n ...
发表于 2011-5-9 23:45 | 显示全部楼层
;感谢诸位分享源码程序
;网上找到求各顶点列表的程序
;引用yshf 的源码程序
;AUTOCAD 2008 下测试O.K.
;将封闭pl线内长度大于100的line置“临时图层5”。
;en各顶点列表自己去弄,网上多得是。
(defun c:ccc ()
    (setq cm (getvar "cmdecho"))
    (setvar "cmdecho" 0)
    (if (setq ssa (ssget '((0 . "LWPOLYLINE") (70 . 1))))
        (progn
           (setq i 0  n (sslength ssa))
           (repeat n
              (setq en (ssname ssa i)
                    i  (1+ i)
              )
              (setq ptb (vertexs en))
              (if (setq ssb (ssget "wp" ptb '((0 . "LINE"))))
                  (progn
                     (setq j 0  m (sslength ssb))
                     (repeat m
                         (setq obj (ssname ssb j)
                               j   (1+ j)
                         )
                         (command "_lengthen" obj "")
                         (if (> (getvar "PERIMETER") 100.0)
                             (command ".chprop" obj "" "layer" "临时图层5" "")
                         )
                     )
                  )
              )
           )
        )
    )
    (setvar "cmdecho" cm)
    (princ)
)


;;;返回多段线的各顶点
;语法:
;(vertexs ename)
;说明:
;返回多段线的各顶点


; 函数内容:

(defun vertexs (ename / plist pp n)
  (setq obj (vlax-ename->vla-object ename))
  (setq plist (vlax-safearray->list
  (vlax-variant-value
    (vla-get-coordinates obj))))
  (setq n 0)
  (repeat (/ (length plist) 2)
    (setq pp (append pp (list (list (nth n plist)(nth (1+ n) plist)))))
    (setq n (+ n 2))
  )
  pp
)


;  参数:
;ename:图元名
;返回值: 各顶点形成的列表

评分

参与人数 1金钱 +20 收起 理由
lengliqun + 20 多谢

查看全部评分

回复

使用道具 举报

 楼主| 发表于 2011-5-9 23:48 | 显示全部楼层
请大家帮帮忙,谢谢。
回复

使用道具 举报

发表于 2011-5-10 09:21 | 显示全部楼层

  1. ;;; for test only
  2. (Defun C:test ()
  3.    (cond
  4.     ((not (setq ss (ssget '((0 . "LINE"))))))
  5.     (T
  6.      (setq i 0
  7.          SS5 (ssadd)
  8.      )

  9.      (while (setq ee (ssname ss i))
  10.        (setq dat (entget ee)
  11.               pa (cdr (assoc 10 dat))
  12.               pb (cdr (assoc 11 dat))
  13.                i (1+ i)
  14.        )
  15.        (if (> (distance pa pb) 100)
  16.          (ssadd ee ss5)
  17.        )
  18.      )
  19.      (command "chprop" ss5 "" "La" "Temp5" "")
  20.    ))
  21. )

评分

参与人数 1金钱 +20 收起 理由
lengliqun + 20 多谢

查看全部评分

回复

使用道具 举报

 楼主| 发表于 2011-5-10 10:48 | 显示全部楼层
三楼的程序好像达不要我的目的,我的意思是框选多个封闭的PL线,自动将封闭PL线内的物体改图层。
回复

使用道具 举报

发表于 2011-5-10 10:54 | 显示全部楼层
本帖最后由 ZZXXQQ 于 2011-5-17 20:07 编辑

是这样吗?
游客,本帖隐藏的内容需要发帖数高于 5 才可浏览,你当前发帖数只有 0

评分

参与人数 1金钱 +20 收起 理由
lengliqun + 20 多谢

查看全部评分

回复

使用道具 举报

 楼主| 发表于 2011-5-10 11:39 | 显示全部楼层
本帖最后由 lengliqun 于 2011-5-10 11:40 编辑

ZZXXQQ改的是PL线。我的意思不是改PL线,是改PL线内的物体,以封闭PL线的内外为条件过虑。
这个好像不是这么简单。
回复

使用道具 举报

发表于 2011-5-10 11:39 | 显示全部楼层
回复 lengliqun 的帖子

Sorry !
错会了题意 (..大于100的line线改...)
回复

使用道具 举报

发表于 2011-5-11 21:57 | 显示全部楼层

  1. ;将封闭pl线内长度大于100的line置“临时图层5”。
  2. ;en各顶点列表自己去弄,网上多得是。
  3. (defun c:ccc ()
  4.     (setq cm (getvar "cmdecho"))
  5.     (setvar "cmdecho" 0)
  6.     (if (setq ssa (ssget '((0 . "LWPOLYLINE") (70 . 1))))
  7.         (progn
  8.            (setq i 0  n (sslength ssa))
  9.            (repeat n
  10.               (setq en (ssname ssa i)
  11.                     i  (1+ i)
  12.               )
  13.               (setq ptb en各顶点列表)
  14.               (if (setq ssb (ssget "wp" ptb (0 . "LINE")))
  15.                   (progn
  16.                      (setq j 0  m (sslength ssb))
  17.                      (repeat m
  18.                          (setq obj (ssname ssb j)
  19.                                j   (1+ j)
  20.                          )
  21.                          (command "_lengthen" obj "")
  22.                          (if (> (getvar "PERIMETER") 100.0)
  23.                              (command ".chprop" obj "" "layer" "临时图层5" "")
  24.                          )
  25.                      )
  26.                   )
  27.               )
  28.            )
  29.         )
  30.     )
  31.     (setvar "cmdecho" cm)
  32.     (princ)
  33. )

评分

参与人数 1金钱 +20 收起 理由
lengliqun + 20 多谢

查看全部评分

回复

使用道具 举报

 楼主| 发表于 2011-5-12 08:16 | 显示全部楼层
我搞不定啊,网上找了个求各顶点列表的程序,可不知放哪里啊。
大侠高抬贵手一并弄个完整的可直接执行的程序吧。
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-16 03:05 , Processed in 0.234892 second(s), 37 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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