乐筑天下

搜索
欢迎各位开发者和用户入驻本平台 尊重版权,从我做起,拒绝盗版,拒绝倒卖 签到、发布资源、邀请好友注册,可以获得银币 请注意保管好自己的密码,避免账户资金被盗
查看: 57|回复: 19

[编程交流] 像smart off之类的东西

[复制链接]

9

主题

30

帖子

21

银币

初来乍到

Rank: 1

铜币
45
发表于 2022-7-5 23:21:06 | 显示全部楼层 |阅读模式
你好
 
我在这个论坛上呆了将近两个月,你帮助我解决了一些问题,对此我非常感谢。从一开始我就在想一个剧本,可能写起来不那么简单。我认为,它需要一点数学知识(与圆相切)和多段线的长度。
 
我花了很多时间使用函数镜像等绘制与直线、圆弧和多段线垂直的直线。如果它能在AutoCAD中用作偏移函数,那就太好了。
 
002108vnto22x2o4zqnh42.png
 
最后一张图显示了辅助尺寸。每第二行的长度为eg 20。
 
我希望,帮助别人不是那么困难。。
回复

使用道具 举报

63

主题

6297

帖子

6283

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
358
发表于 2022-7-5 23:26:31 | 显示全部楼层
试试这个。
 
  1. (defun c:test (/ s d i l ang sn pt)
  2. ;;    Tharwat 11. Mar. 2014    ;;
  3. (if (setq s (ssget "_+.:S:E" '((0 . "LWPOLYLINE,SPLINE,LINE,ARC"))))
  4.    (progn
  5.      (setq d (/ (vlax-curve-getdistatparam
  6.                   (setq sn (ssname s 0))
  7.                   (vlax-curve-getendparam sn)
  8.                 )
  9.                 1.5
  10.              )
  11.            i 1.5
  12.            n i
  13.            l '(1.5 7.0)
  14.      )
  15.      (repeat (fix d)
  16.        (setq
  17.          ang (angle '(0.0 0.0 0.0)
  18.                     (vlax-curve-getfirstderiv
  19.                       sn
  20.                       (vlax-curve-getparamatpoint
  21.                         sn
  22.                         (setq pt (vlax-curve-getpointatdist sn n))
  23.                       )
  24.                     )
  25.              )
  26.          n (+ n i)
  27.        )
  28.        (entmake
  29.          (list
  30.            '(0 . "LINE")
  31.            (cons 10 pt)
  32.            (cons
  33.              11
  34.              (polar pt (+ ang (* pi 0.5)) (car (setq l (reverse l))))
  35.            )
  36.          )
  37.        )
  38.      )
  39.    )
  40. )
  41. (princ)
  42. )
  43. (vl-load-com)
回复

使用道具 举报

9

主题

30

帖子

21

银币

初来乍到

Rank: 1

铜币
45
发表于 2022-7-5 23:28:35 | 显示全部楼层
非常感谢。你真快!我不好意思要求微调。你能做4件事吗?
-给机会选择要创建的线的哪一侧,
-在“测试”层中绘制线,
-给我机会指定一个养老院,第一行的长度-现在是1.5(我想选择0到1.5之间,以适应其他模块)。
-提供指定多段线“起点”的机会
 
002109klk9z9h8h2gql8ff.jpg
 
最后三次恳求不太需要,但很酷!(这是一个非常舒适的脚本)。指定绘制线的侧面很重要。
 
非常感谢。
回复

使用道具 举报

63

主题

6297

帖子

6283

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
358
发表于 2022-7-5 23:31:03 | 显示全部楼层
我现在太累了,现在是时候在这里睡觉了,因为现在已经过了午夜10分钟了,所以如果没有人介入并帮助你解决你需要这些修改的问题,那么明天可能还会继续
回复

使用道具 举报

9

主题

30

帖子

21

银币

初来乍到

Rank: 1

铜币
45
发表于 2022-7-5 23:34:28 | 显示全部楼层
好啊非常感谢。
002110vvrll4fn4xzzjtkx.png
我想如果我想选择多段线的起点,这将是另一条多段线的起点,我的多段线必须在顶部才能选择它。
回复

使用道具 举报

63

主题

6297

帖子

6283

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
358
发表于 2022-7-5 23:39:56 | 显示全部楼层
接下来,我们将进行一场精彩的动态演示。
 
  1. (defun c:test (/ *error* Draw_Dynamic_Real s ang sn pt a b d g p gp len x)
  2. ;;    Tharwat 12. Mar. 2014    ;;
  3. (defun *error* (x)
  4.    (redraw)
  5.    (if (wcmatch (strcase x) "*EXIT*,*CANCEL*,*BREAK*")
  6.      (princ x)
  7.      (princ (strcat "\n Error: " x))
  8.    )
  9. )
  10. (if (and (setq p (getpoint "\n Specify point at the End Side of Polyline :"))
  11.           (if (setq s (ssget p '((0 . "LWPOLYLINE,SPLINE,LINE,ARC"))))
  12.             t
  13.             (Alert "Pick a point at the end of [ LWPOLYLINE,SPLINE,LINE,ARC ] only .")
  14.           )
  15.      )
  16.    (progn (defun Draw_Dynamic_Real (sn o x sp r / d i n l ang pt)
  17.             (setq d (/ (vlax-curve-getdistatparam sn (vlax-curve-getendparam sn)) o)
  18.                   i o
  19.                   l (list (* o 0.5) (* o 1.5))
  20.             )
  21.             (if (> sp 0.)
  22.               (setq n sp)
  23.               (setq n i)
  24.             )
  25.             (repeat (fix d)
  26.               (setq ang (angle '(0.0 0.0 0.0)
  27.                                (vlax-curve-getfirstderiv
  28.                                  sn
  29.                                  (vlax-curve-getparamatpoint sn (setq pt (vlax-curve-getpointatdist sn n)))
  30.                                )
  31.                         )
  32.                     n   (+ n i)
  33.               )
  34.               (if r
  35.                 (entmake (list '(0 . "LINE")
  36.                                (cons 8 "test")
  37.                                (cons 10 pt)
  38.                                (cons 11
  39.                                      (polar pt
  40.                                             (if x
  41.                                               (+ ang (* pi 0.5))
  42.                                               (+ ang (* pi 1.5))
  43.                                             )
  44.                                             (car (setq l (reverse l)))
  45.                                      )
  46.                                )
  47.                          )
  48.                 )
  49.                 (grdraw pt
  50.                         (polar pt
  51.                                (if x
  52.                                  (+ ang (* pi 0.5))
  53.                                  (+ ang (* pi 1.5))
  54.                                )
  55.                                (car (setq l (reverse l)))
  56.                         )
  57.                         1
  58.                         0
  59.                 )
  60.               )
  61.             )
  62.             (princ)
  63.           )
  64.           (setq d   1.5
  65.                 len (vlax-curve-getdistatparam (setq sn (ssname s 0)) (vlax-curve-getendparam sn))
  66.           )
  67.           (if (< (distance (setq a (vlax-curve-getstartpoint sn)) p)
  68.                  (distance (setq b (vlax-curve-getendpoint sn)) p)
  69.               )
  70.             (setq p  a
  71.                   gp 0.
  72.             )
  73.             (setq p  b
  74.                   gp (rem len d)
  75.             )
  76.           )
  77.           (while (eq (car (setq g (grread t 13 0))) 5)
  78.             (redraw)
  79.             (if (minusp (sin (- (angle p (polar p (angle b a) (/ len 1000.))) (angle p (cadr g)))))
  80.               (setq x nil)
  81.               (setq x t)
  82.             )
  83.             (Draw_Dynamic_Real sn d x gp nil)
  84.           )
  85.           (if (eq (car g) 3)
  86.             (Draw_Dynamic_Real sn d x gp t)
  87.           )
  88.    )
  89. )
  90. (redraw)
  91. (princ)
  92. )
  93. (vl-load-com)
回复

使用道具 举报

24

主题

147

帖子

123

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
120
发表于 2022-7-5 23:40:14 | 显示全部楼层
Tharwat,动态演示确实很棒。顺便问一下,你用了什么软件来创建这个?
回复

使用道具 举报

63

主题

6297

帖子

6283

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
358
发表于 2022-7-5 23:46:04 | 显示全部楼层
 
谢谢
 
这是卡姆塔西亚。
回复

使用道具 举报

9

主题

30

帖子

21

银币

初来乍到

Rank: 1

铜币
45
发表于 2022-7-5 23:47:13 | 显示全部楼层
嗨Tharwat!我对你的第二个剧本有意见。我不知道为什么它只在第一个文件中第一次起作用,但在那之后,它就不起作用了。。第一个脚本有效!
 
我在命令窗口中放置“test”文本,然后我看到“指定多段线末端的点”,单击后,我看到“指定偏移距离”,我放置1.5。单击Enter,什么也没有!脚本在这一刻停止。
 
你用比我预期的更好的方式编写这个程序,我认为“指定偏移距离”可以输入到代码中(不需要在Autocad中输入)。
 
你能纠正这个吗?非常感谢。
回复

使用道具 举报

63

主题

6297

帖子

6283

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
358
发表于 2022-7-5 23:50:45 | 显示全部楼层
命令行中是否有任何错误消息?
你确定你提供的距离不超过物体的长度吗?
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

QQ|关于我们|小黑屋|乐筑天下 繁体中文

GMT+8, 2025-3-11 00:02 , Processed in 1.218110 second(s), 75 queries .

© 2020-2025 乐筑天下

联系客服 关注微信 帮助中心 下载APP 返回顶部 返回列表