明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1778|回复: 29

[提问] (求助)麻烦大神看一下,能不能帮小弟实现定距等分的问题

[复制链接]
发表于 2024-7-29 19:19:29 | 显示全部楼层 |阅读模式
11明经币
本帖最后由 999999 于 2024-7-30 14:16 编辑

又来论坛上打扰各位大神啦,这次需要的是一个小功能,定距等分,CAD自带的不好用

看看有没有大神能够帮小弟解决这个问题的
感谢大家啦,虽然我没有为论坛做贡献,我一直都要提问题,和要求,但是我想的是,小功能提出问题来,大神们能帮忙解决,对于论坛本身来说,也是完善各种小插件的需求,对于有同样需要的小伙伴来说,也是一种帮助,一问一答,这样的论坛就多姿多彩,不啰嗦啦,直接进入主题


等距等分:
1.输入命令

2.选择需要等分的线
3.输入需要等分的块名或空格选择块(带记忆功能记住块的名字):AA
4.输入块的间距(或鼠标量间距)带记忆功能:40
5.输入块中心点与点击线段端点的距离(或鼠标量间距)带记忆功能:10
   如果没有输入距离的话,就默认块中心点与点击线段端点距离为0

6.生成结果

感谢大神们的耐心观看,如果有时间的话,希望大神们可以帮帮小弟实现这个功能,谢谢啦


今天在论坛找到了一个和我需要的效果一样的,http://bbs.mjtd.com/thread-101300-1-1.html?_dsign=d2c50e25   这个插件目前就是缺少记忆功能,和可以输入块名的功能,看看大神们能不能帮忙完善一下。

写这个插件的大神是论坛里的    自贡黄明儒 大神


附件: 您需要 登录 才可以下载或查看,没有账号?注册
发表于 2024-7-29 19:19:30 | 显示全部楼层
本帖最后由 llsheng_73 于 2024-12-21 18:14 编辑

  1. (defun makedcl(str_lst / dclfile fileID dclHandle)
  2.   (setq dclfile(vl-filename-mktemp nil nil ".dcl")fileID(open dclfile "w"))
  3.   (write-line(apply'strcat str_lst)fileID)
  4.     (close fileID)
  5.     (setq dclHandle(load_dialog dclfile))
  6.     (vl-file-delete dclfile)
  7.     dclHandle)
  8. (defun c:TT(/ dcl blocks e dist d a jl l km *model)
  9.   (vl-load-com)
  10.   (setq dcl(makedcl'("DFX:dialog{label=\"等分线\";key=\"AAA\";"
  11.                      ":column{:popup_list{label=\"块名\";key=\"KM\";width=20;}:row{:button{key = \"SE\";label=\"...\";}:edit_box{label=\"缩放比例\";key=\"BL\";}}"
  12.                             ":edit_box{label=\"插入间距\";key=\"JL\";}:edit_box{label=\"偏距(左+右-)\";key=\"D\";}"
  13.                             ":row{:button{key = \"ESC\";label = \"放弃\";is_cancel = true;}:button{key = \"DO\";label=\"执行\";}}}}"))
  14.         *model(vlax-get-property(vlax-get-property(vlax-get-acad-object)'activedocument)'modelspace)
  15.          ctl 4)
  16.   ((lambda(/ a)(While(SetQ a(TblNext "block"(not blocks)))(SetQ blocks(Cons(Cdr(Assoc 2 a))blocks)))))
  17.   (vl-every(function(lambda(a b)(set(read a)b)))(setq keys'("KM""BL""JL""D"))(vlax-ldata-get"上次记忆""参数"))
  18.   (while(> ctl 1)
  19.     (new_dialog"DFX"dcl)
  20.     (start_list"KM")(vl-every(function add_list)blocks)(end_list)
  21.     (set_tile"LH"(if l(strcat"线长"(rtos l 2 2))"未选择"))
  22.     (and km(set_tile"KM"(itoa(vl-position km blocks))))
  23.     (vl-some(function(lambda(a b)(and b(set_tile a b)nil)))(cdr keys)(list bl jl d))
  24.     (action_tile"SEL""(done_dialog 2)")(action_tile"SE""(done_dialog 2)")
  25.     (action_tile"BL""(IF(or(NOT(DISTOF $VALUE))(<=(DISTOF $VALUE)0))(PROGN(ALERT\"只允许数值且大于0!\")(MODE_TILE\"BL\"2))(setq bl $VALUE))")
  26.     (action_tile"JL""(IF(or(NOT(DISTOF $VALUE))(<=(DISTOF $VALUE)0))(PROGN(ALERT\"只允许数值且大于0!\")(MODE_TILE\"JL\"2))(setq jl $VALUE))")
  27.     (action_tile"D""(IF(NOT(DISTOF $VALUE))(PROGN(ALERT\"只允许数值!\")(MODE_TILE\"D\"2))(setq d $VALUE))")
  28.     (action_tile"DO""(SETQ VALUE(CONS(NTH(ATOI(GET_TILE\"KM\"))blocks)(MAPCAR(function GET_TILE)'(\"BL\"\"JL\"\"D\"))))(done_dialog 1)")
  29.   (cond((= (setq ctl(start_dialog)) 2)
  30.         (prompt"\n点选要插入的参照")
  31.         (and(setq a(ssget":E:S"'((0 . "insert"))))
  32.             (setq a(ssname a 0))
  33.             (setq km(cdr(assoc 2(entget a))))))
  34.        ((= ctl 1)
  35.         (vl-every(function(lambda(a b c)(set(read a)(b c))))keys(list princ distof distof distof)value)
  36.         (vlax-ldata-put"上次记忆""参数"VALUE)
  37.         (while(progn(prompt"\n点选要等分的线")
  38.                 (and(setq e(ssget":E:S"'((0 . "*polyline,arc,circle,ellipse,spline"))))
  39.             (setq e(ssname e 0))
  40.             (setq L(-(vlax-curve-getdistatparam e(vlax-curve-getendparam e))(vlax-curve-getdistatparam e(vlax-curve-getstartparam e))))))
  41.           ((lambda(/ p ang)(setq a(- jl))
  42.                (while(<(setq a(+ a jl))l)
  43.                   (setq p(vlax-curve-getpointatdist e a)
  44.                         ang(angle'(0 0)(vlax-curve-getFirstDeriv e(vlax-curve-getparamatpoint e p)))
  45.                         p(polar p(+(* pi 0.5)ang)d))
  46.                   (vlax-invoke-method *model'insertblock(vlax-3d-point p)km bl bl 1 ang)))))))
  47.     ))

本帖子中包含更多资源

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

x
回复

使用道具 举报

发表于 2024-7-29 19:21:45 | 显示全部楼层
试一下新版的ARRAY,可以沿路径
回复

使用道具 举报

 楼主| 发表于 2024-7-29 20:13:32 | 显示全部楼层
kozmosovia 发表于 2024-7-29 19:21
试一下新版的ARRAY,可以沿路径

大神您好,这个命令我刚刚试了一下哦,不理想哦
回复

使用道具 举报

发表于 2024-7-29 20:42:36 | 显示全部楼层
看上去不简单啊
回复

使用道具 举报

发表于 2024-7-30 10:32:10 | 显示全部楼层

本帖子中包含更多资源

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

x
回复

使用道具 举报

 楼主| 发表于 2024-7-30 14:10:25 | 显示全部楼层

那确实是,哈哈,懂的人觉得简单,不懂人的觉得难,我是属于第二者
回复

使用道具 举报

 楼主| 发表于 2024-7-30 14:12:26 | 显示全部楼层
本帖最后由 999999 于 2024-7-30 14:55 编辑

大神,您好,看您的操作是这样的效果呢。可以方便提供吗?

点评

这不就是标准ARRAY的效果  发表于 2024-7-30 16:15
回复

使用道具 举报

 楼主| 发表于 2024-7-30 14:53:49 | 显示全部楼层
999999 发表于 2024-7-30 14:12
大神,您好,看您的操作是这样的效果呢

大神您好,这个可以方便提供吗?
回复

使用道具 举报

发表于 2024-8-1 18:46:49 | 显示全部楼层
大神您好,这个可以方便提供吗?
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-1-22 18:52 , Processed in 0.236715 second(s), 25 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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