明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1921|回复: 15

[提问] (求助)请教一下各位大神,有没有插件可以直接实现以下图片的效果

[复制链接]
发表于 2021-12-19 00:08:29 | 显示全部楼层 |阅读模式
10明经币
麻烦路过的大神,能不能帮帮小弟实现以下图片的功能:
输入命令>选择对象>确认     这个功能的表达,不知道怎么去表达,就是类似,生成外轮廓与内轮廓,又感觉像是选中的图形交点修剪
附件: 您需要 登录 才可以下载或查看,没有账号?注册

最佳答案

查看完整内容

未做任何系统变量的处理,自己处理一下,完成状态为region,要lwpolyline的话,自己写一下后续,很简单,用炸开,pedit命令就行。
发表于 2021-12-19 00:08:30 | 显示全部楼层
本帖最后由 夏生生 于 2021-12-19 04:43 编辑



未做任何系统变量的处理,自己处理一下,完成状态为region,要lwpolyline的话,自己写一下后续,很简单,用炸开,pedit命令就行。


本帖子中包含更多资源

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

x
回复

使用道具 举报

 楼主| 发表于 2021-12-19 08:42:00 | 显示全部楼层
夏生生 发表于 2021-12-19 04:28
未做任何系统变量的处理,自己处理一下,完成状态为region,要lwpolyline的话,自己写一下后续,很简单 ...

大神,请问这个目前需要框选两次能实现这种效果,是否可以实现框选一次就实现呢
回复

使用道具 举报

发表于 2021-12-19 09:33:57 | 显示全部楼层
这个类似建筑结构中的梁线剪裁
回复

使用道具 举报

 楼主| 发表于 2021-12-19 09:57:07 | 显示全部楼层
这个是根据最佳答案的大神的代码改了一下,一开始支持高版本,需要框选两次,用在07上没有用,会有错误提示,我把command -s  后面的-s删除了,就可以用了,而且还变成了框选一次就可以生成最终效果了,谢谢1楼大神的代码,我感觉找到了新天地,我还不知道是什么原理呢,哈哈,莫名奇妙的根据07版本的提示,删了一下,就更好了

本帖子中包含更多资源

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

x
回复

使用道具 举报

 楼主| 发表于 2021-12-19 09:58:49 | 显示全部楼层
tigcat 发表于 2021-12-19 09:33
这个类似建筑结构中的梁线剪裁

行业不一样,但是很多小功能,还是一样的
回复

使用道具 举报

发表于 2021-12-19 10:09:04 | 显示全部楼层
999999 发表于 2021-12-19 09:58
行业不一样,但是很多小功能,还是一样的

;不知道作者是谁,贴出交流下
  1. (defun c:cut_new (/   ss  ns     i      pset   oldos  en
  2.       ed   p1  p2     plist  intSET pi1    pi2
  3.       eni   intseti       j      pjlist pj1    pj2
  4.       enj   intp  dis12  midpoint       intlist
  5.       midSET np  midlb  midrt
  6.      )
  7.   (command "undo" "group")
  8.   (if (= fixdist_1 nil)
  9.     (setq fixdist_1 400)
  10.   )
  11.   (princ "\n请输入控制间距,即平面图中最大梁宽) <")
  12.   (princ fixdist_1)
  13.   (princ ">:")
  14.   (setq fixdist (getint))
  15.   (if (= fixdist nil)
  16.     (setq fixdist fixdist_1)
  17.   )
  18.   (setq fixdist_1 fixdist)
  19.   (setq ss (ssget (list (cons 0 "LINE"))))

  20.   (setq ns (sslength ss))
  21.   (setq i 0)
  22.   (setq pset nil)
  23.   (setq oldos (getvar "osmode"))
  24.   (setvar "osmode" 0)
  25.   (setvar "cmdecho" 0)

  26.           ;得到线的端点集
  27.   (while (< i ns)
  28.     (progn
  29.       (setq en (ssname ss i))
  30.       (setq ed (entget en))
  31.       (setq p1 (cdr (assoc 10 ed)))
  32.       (setq p2 (cdr (assoc 11 ed)))
  33.       (setq plist (list p1 p2 en))
  34.       (setq pset (cons plist pset))
  35.       (setq i (1+ i))
  36.     )
  37.   )

  38.           ;得到线的交点
  39.   (setq intSET nil)
  40.   (setq i 0)
  41.   (while (< i ns)
  42.     (progn
  43.       (setq plist (nth i pset))
  44.       (setq pi1  (nth 0 plist)
  45.       pi2  (nth 1 plist)
  46.       eni  (nth 2 plist)
  47.       )
  48.       (setq intseti nil)
  49.       (setq j 0)
  50.       (while (< j ns)
  51.   (progn
  52.     (if (= i j)
  53.       (setq j (1+ j))
  54.       (progn
  55.         (setq pjlist (nth j pset))
  56.         (setq pj1  (nth 0 pjlist)
  57.         pj2  (nth 1 pjlist)
  58.         enj  (nth 2 pjlist)
  59.         )
  60.         (if (setq intp (inters pi1 pi2 pj1 pj2))
  61.           ;如果有交点,则存入交点集
  62.     (progn
  63.       (setq intlist (list intp enj))
  64.       (setq intseti (cons intlist intseti))
  65. ;;;              (princ intseti)
  66. ;;;              (princ "\n")
  67.     )
  68.         )
  69.         (setq j (1+ j))
  70.       )
  71.     )
  72.   )
  73.       )
  74.           ;排序
  75.       (setq
  76.   intseti  (vl-sort
  77.       intseti
  78.       (function (lambda (e1 e2)
  79.             (or (< (car (car e1)) (car (car e2)))
  80.           (< (cadr (car e1)) (cadr (car e2)))
  81.             )
  82.           )
  83.       )
  84.     )
  85.       )
  86.       (setq intseti (cons eni intseti))
  87.       (setq intSET (cons intseti intSET))
  88. ;;;     (princ intSET)
  89. ;;;     (princ "\n")
  90.       (setq i (1+ i))
  91.     )          ;结束progn
  92.   )          ;结束while i<ns

  93.           ;求距离小于限值的线段的中点集
  94.   (setq  i 0
  95.   midSET nil
  96.   )
  97.   (while (< i ns)
  98.     (progn
  99.       (setq intseti (nth i intSET))
  100.       (setq j  1
  101.       np  (length intseti)
  102.       eni  (car intseti)
  103.       )
  104.       (setq pj1 (car (nth j intseti)))
  105.       (setq j 2)
  106.       (while (< j np)
  107.   (progn
  108.     (setq pj2 (car (nth j intseti)))
  109.     (setq dis12 (distance pj1 pj2))
  110.     (if (< dis12 fixdist)
  111.       (progn
  112.         (setq midpoint (mid pj1 pj2))
  113. ;;;       (setq midSET (cons midpoint midSET))
  114. ;;;       (princ "\nThe midpoint is :\n")
  115. ;;;       (princ midpoint)
  116.         (setq midlb (list  (- (nth 0 midpoint) (/ dis12 10.0))
  117.         (- (nth 1 midpoint) (/ dis12 10.0))
  118.         (nth 2 midpoint)
  119.         )
  120.         midrt (list  (+ (nth 0 midpoint) (/ dis12 10.0))
  121.         (+ (nth 1 midpoint) (/ dis12 10.0))
  122.         (nth 2 midpoint)
  123.         )
  124.         )
  125.         (command "break" (ssget "c" midlb midrt) pj1 pj2)
  126.       )
  127.     )
  128.     (setq pj1 pj2)
  129.     (setq j (1+ j))
  130.   )
  131.       )
  132.       (setq i (1+ i))
  133.     )
  134.   )

  135. ;;; (princ "\nThe result is:\n")
  136. ;;; (princ intSET)
  137. ;;; (princ "\n")
  138.   (setvar "osmode" oldos)
  139.   (command "undo" "end")
  140.   (princ)
  141. ;;;  (setq i 0)
  142. ;;;  (while
  143. )
  144. ;;; (setq fn "e:\\temp\\test.txt")
  145. ;;; (setq f (open fn "a"))
  146. ;;; (princ p1 f)
  147. ;;; (princ "\n" f)
  148. ;;; (princ p2

  149. (defun mid (p1 p2 / x y)
  150.   (setq  x (/ (+ (nth 0 p1) (nth 0 p2)) 2)
  151.   y (/ (+ (nth 1 p1) (nth 1 p2)) 2)
  152.   )
  153.   (list x y (nth 2 p1))
  154. )

回复

使用道具 举报

 楼主| 发表于 2021-12-19 10:20:42 | 显示全部楼层
tigcat 发表于 2021-12-19 10:09
;不知道作者是谁,贴出交流下

感谢大神,请问大神能贴一个这个代码的功能作用上来吗?刚刚试了一下,不知道怎么用,,真的很惭愧
回复

使用道具 举报

发表于 2021-12-19 10:29:44 | 显示全部楼层
999999 发表于 2021-12-19 09:57
这个是根据最佳答案的大神的代码改了一下,一开始支持高版本,需要框选两次,用在07上没有用,会有错误提示 ...

可以帮忙增加全部连接成多段线代码吗  谢谢
回复

使用道具 举报

发表于 2021-12-19 15:58:58 | 显示全部楼层
本帖最后由 tigcat 于 2021-12-19 16:04 编辑
999999 发表于 2021-12-19 10:20
感谢大神,请问大神能贴一个这个代码的功能作用上来吗?刚刚试了一下,不知道怎 ...

这个就是把相交的梁线打开,应该是只支持直线;然后是如果有缺口应该不能补全缺口.原作者是<AutoLISP在建筑结构设计中的应用>一书的作者刘立平老师.

本帖子中包含更多资源

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

x
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-15 01:34 , Processed in 0.299696 second(s), 24 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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