明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 737|回复: 3

[提问] 如何选择快内圆进行修剪?

[复制链接]
发表于 2017-10-18 17:14:49 | 显示全部楼层 |阅读模式
本帖最后由 chenjieq1990 于 2017-10-18 17:14 编辑

一条直线,多段线或者直线,在中点插入一个圆形的块,块里面有多个图元,现在插完了需要用块里面的最外的圆修剪这个直线,虽然我的块做了遮挡,但是还是想修剪了,现在我插入块了之后,不知道如何获得块里面的图元名,很是头疼,看了论坛里面的帖子,好像是用tblobjname和entnext,但是有点不懂,希望有人指点一二,或者有什么更方便的方法,用vlisp。
  1. (defun C:gp(/)


本帖子中包含更多资源

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

x
 楼主| 发表于 2017-10-18 17:15:54 | 显示全部楼层
  1. (defun C:gp(/)
  2.   (vl-load-com)
  3. (setq cm (getvar "cmdecho"))
  4. (setq os (getvar "osmode"))
  5. (setvar "cmdecho" 0)
  6. (setvar "osmode" 0)



  7.   (setq ss (car (cdr (ssgetfirst))))
  8.   (while (= ss nil) (setq ss (ssget '((-4 . "<or")(0 . "LINE") (0 . "LWPOLYLINE")(-4 . "or>")))))
  9.   

  10.   (setq plst nil)
  11. (setq n 0)

  12. (repeat(sslength ss)
  13. (setq ent(ssname ss n))
  14.   (setq ent(entget ent))
  15.   (if(= (cdr (assoc 0 ent)) "LWPOLYLINE")
  16.     (progn

  17.     (foreach n ent
  18.       (if(= (car n) 10)
  19.         (setq plst(cons (cdr n) plst)))
  20.       )
  21.     (setq p1(car plst)
  22.           p1(list (car p1) (cadr p1))
  23.           p2(cadr plst)
  24.           p2(list (car p2) (cadr p2))
  25.           
  26.     )
  27.     )
  28.     )
  29.   
  30.       
  31. (if(= (cdr (assoc 0 ent)) "LINE")

  32. (setq p1(cdr (assoc 10 ent))
  33.       p1(list (car p1) (cadr p1))
  34.       p2(cdr (assoc 11 ent))
  35.       p2(list (car p2) (cadr p2)))
  36.   )
  37.   (setq p0(mapcar '(lambda(x y) (/ (+ x y) 2) ) p1 p2))


  38.   ;|(setq r(getreal"输入半径<0.2>:"))
  39.   (if(= r nil)(setq r 0.2))
  40.   (vl-cmdf "circle" p0 r "")     
  41.   (setq yp(entlast))
  42.   (vl-cmdf "trim" yp "" (list (ssname ss n) p0) "")|;



  43.   (entmake (list (cons 0 "INSERT")
  44.                           (cons 10 p0)
  45.                           (cons 2 "溢流口")
  46.                           )
  47.                     )
  48.   (setq ylk(entlast))
  49.   (setq ylkvlx(vlax-ename->vla-object ylk))
  50.   (setq ylk1(entget ylk))

  51. (setq n(+ 1 n))
  52. );end repeat

  53.   
  54. (prin1)
  55. (setvar "cmdecho" cm)
  56. (setvar "osmode" os)
  57. )
回复 支持 0 反对 1

使用道具 举报

发表于 2017-10-19 13:13:55 | 显示全部楼层
nentsel试试
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2025-5-19 19:09 , Processed in 0.195696 second(s), 27 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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