明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
楼主: kucha007

【S】填充拉伸_v8.4——支持记忆拉伸

    [复制链接]
发表于 2024-10-20 14:33:46 | 显示全部楼层
jierc 发表于 2024-10-20 11:12
8.2测试如果拉伸过程按ESC取消后,会导致CAD出现问题,希望优化

Lisp做不好这个东西的,
ESC要靠钩子拦截再禁止回调,然后回收边界,回收又导致UndoLog记录了,导致撤回出现边界.
还是要转入到C#或者ARX才能做
发表于 2024-10-25 22:29:03 | 显示全部楼层
预览红线真的没必要251或者7号色不好吗 lsp下载不了 这个权限设置好吗 我也是没看懂
发表于 2024-10-26 14:52:14 | 显示全部楼层
老大 记忆拉伸怎么用啊 有个问题就是生成的TC_填充边界框 图层最后怎么没有删除呢 等于说图纸多了个图层
发表于 2024-11-9 10:23:36 | 显示全部楼层
本帖最后由 yoyrtweq 于 2024-11-9 11:18 编辑

这也是论坛里大佬写的,这个比群主精简点,但产生的填充边界稍微慢点和没有拉伸预览。但这个胜在与拉伸出数值后,直接框选后往左往右都可以按照拉伸数值走,但群主的往左就只能往左,必须在设置中反向才能往右。能否结合各家的优点进行优化。提升效率一些。优化下代码上取消反向,直接框选后往左往右都可以按照拉伸数值走呢。

(defun C:S( )
(setq old_lay (getvar "clayer")) ;保存当前图层
   (setq layer "填充边界线")
        (if (not (tblsearch "layer" layer ))
        (progn   (command "layer" "new" "填充边界线" "s" "填充边界线" "C" 5 "" "L" "Continuous" "" "P" "N" "" "Tr" "90" "" "LW" 0"" "") )  );新建图层
(setvar "clayer" old_lay) ;恢复原先图层
(princ "\n请选择:除第一个选择框外,其他选择框中的非关联填充图案不会被拉伸")
(setq xyxyxy (last (ssnamex (setq ss (ssget ":S" )) 0)))  ;;选择需要拉伸的填充图案或者其他图元,获得ssget选择集的一个信息表。
(setq xt (last (cadr xyxyxy)) yt (last (cadddr xyxyxy)))     ;;提取刚才的窗选对角坐标。
(setq xt (trans xt 0 1)
      yt (trans yt 0 1)
)
  (COMMAND "clayer" layer) ;置当前图层
(setq sg (ssget "P" '((0 . "HATCH")) ) i -1 );过滤对象只选填充图案
  (if sg (while (setq s1 (ssname sg (setq i (1+ i))));批量生成填充边界
    (command "-hatchedit" s1 "b" "p" "y")(setq sggg (ssget "A"  '((8 . "填充边界线"))))(command "draworder" sggg "" "b" )    )) ;批量生成填充边界,选择边界线,后置边界线
(setvar "clayer" old_lay) ;恢复原先图层
(command "SELECT" "c" "non"  xt "non"  yt pause )  
(command ".STRETCH"  "p"  "")   ;;
   (command (setq pt (getpoint "\n指定基点:")))
(IF (NULL *dd*) (setq *dd* 10))
   (setq dd (getdist pt (strcat "\n输入拉伸距离<" (rtos *dd* 2 2) ">:")))
   (if (NULL dd) (setq dd *dd*) (setq *dd* dd))
  (command dd)
(if sg (while (COMMAND "_.erase"  sggg "")    ));删除生成的边界线!
  (princ)
)
回复 支持 1 反对 0

使用道具 举报

 楼主| 发表于 2024-11-11 09:14:33 | 显示全部楼层
释烬 发表于 2024-10-26 14:52
老大 记忆拉伸怎么用啊 有个问题就是生成的TC_填充边界框 图层最后怎么没有删除呢 等于说图纸多了个图层

每次拉伸都新建然后删除图层,在图层多的时候可能会很卡。所以改为清空图层
 楼主| 发表于 2024-11-11 09:15:34 | 显示全部楼层
yoyrtweq 发表于 2024-11-9 10:23
这也是论坛里大佬写的,这个比群主精简点,但产生的填充边界稍微慢点和没有拉伸预览。但这个胜在与拉伸出数 ...

收到,学习一下~
发表于 2024-11-11 13:40:40 | 显示全部楼层
kucha007 发表于 2024-11-11 09:14
每次拉伸都新建然后删除图层,在图层多的时候可能会很卡。所以改为清空图层

生成图层是不合适的 还有就是这个脚本还是会有出错额情况 请检查下
发表于 2024-11-11 14:20:19 | 显示全部楼层
kucha007 发表于 2024-11-11 09:15
收到,学习一下~

我觉得你写的这个比较流畅,拉伸不卡顿,我这个就是拉伸时候要计算边框,有点卡顿,能结合把你这个优化下,又能流畅拉伸,还能预览,还能左右都能记忆拉伸,就非常nice了
 楼主| 发表于 2024-11-12 10:07:21 | 显示全部楼层
释烬 发表于 2024-11-11 13:40
生成图层是不合适的 还有就是这个脚本还是会有出错额情况 请检查下

具体是指哪里出错?
 楼主| 发表于 2024-11-12 13:18:26 | 显示全部楼层
yoyrtweq 发表于 2024-11-11 14:20
我觉得你写的这个比较流畅,拉伸不卡顿,我这个就是拉伸时候要计算边框,有点卡顿,能结合把你这个优化下 ...

试了一下,动态的时候不支持直接空格。但是输入拉伸距离支持极坐标。静态和你给的程序保持一致了
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-12-28 03:06 , Processed in 0.175138 second(s), 17 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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