明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1137|回复: 16

这样的圆拖拉变形

[复制链接]
发表于 2023-6-16 15:23 | 显示全部楼层 |阅读模式
5明经币
如图,在输入指定的红色中心线总长度后,可以动态拖拉成不同长宽,保证4MM不变,怎么做到啊?

输入的值如果能设置为中心线或外围线,内圈线的值更好,需要lisp的程序
附件: 您需要 登录 才可以下载或查看,没有账号?注册

最佳答案

查看完整内容

其实,没啥用,lisp函数grread的缺陷,没办法支持捕捉,只能看着好玩。想要精准捕捉,还是要net或者c++
发表于 2023-6-16 15:23 | 显示全部楼层
  1. (DEFUN C:TT (/ PT ZC ERR LOOP GR CODE PC L1 R PTT ANG P1 P2 P3 P4 EC E1
  2.          E2)
  3.   (SETQ Pt (GETPOINT "\n插入中心点"))
  4.   (if (not pt)
  5.     (vl-exit-with-value 0)
  6.   )
  7.   (setq zc (getreal "\n输入周长"))
  8.   (FOREACH X (LIST "CENTER2" )
  9.     (setq
  10.       err (vl-catch-all-apply
  11.       'vla-Load
  12.       (list (vla-get-Linetypes
  13.         (vla-get-ActiveDocument (vlax-get-acad-object))
  14.       )
  15.       X
  16.       "acad.lin"
  17.       )
  18.     )
  19.     )
  20.     (if  (vl-catch-all-error-p err)
  21.       (if (= (vl-catch-all-error-message err)
  22.        "Automation Error. Duplicate record name"
  23.     )
  24.   (alert (strcat "A line type named '" X "' already exists."))
  25.       )
  26.     )
  27.   )
  28.   (setq  loop t)
  29. (WHILE LOOP
  30.     (setq gr   (grread t 15 0)
  31.     code (car gr)
  32.     Pc   (cadr gr)
  33.     )
  34.     (cond
  35.       ((= code 5)      ; 鼠标移动
  36.   (redraw)
  37.        (FOREACH  X (LIST EC E1 E2)
  38.    (if X
  39.      (entdel X)
  40.    )
  41.        )
  42.   (setq l1 (distance pt pc)
  43.         r   (/ (- zc l1 l1) 2 pi)
  44.   )
  45.   (IF (> R 4)
  46.     (PROGN
  47.       (SETQ ptt pc
  48.       ANG (ANGLE PT PTT)
  49.       p1  (polar pt (+ ANG (* 0.5 pi)) r)
  50.       p2  (polar pt (+ ANG (* 1.5 pi)) r)
  51.       p3  (polar ptt (+ ANG (* 1.5 pi)) r)
  52.       p4  (polar ptt (+ ANG (* 0.5 pi)) r)
  53.       ec  (entmakex  (LIST
  54.           '(0 . "LWPOLYLINE")
  55.           '(100 . "AcDbEntity")
  56.           '(100 . "AcDbPolyline")
  57.           '(90 . 5)
  58.           '(70 . 1)
  59.          
  60.           (CONS 10 P1)
  61.           '(42 . 0.0)
  62.           (CONS 10 P4)
  63.           '(42 . -1.0)
  64.           (CONS 10 P3)
  65.           '(42 . 0.0)
  66.           (CONS 10 P2)
  67.           '(42 . -1.0)
  68.         )
  69.           )
  70.       )
  71.       (VLA-OFFSET (vlax-ename->vla-object EC) 2)
  72.       (SETQ E1 (ENTLAST))
  73.       (VLA-OFFSET (vlax-ename->vla-object EC) -2)
  74.       (SETQ E2 (ENTLAST))
  75.       (VLA-PUT-COLOR(vlax-ename->vla-object EC)1)
  76.       (VLA-PUT-Linetype(vlax-ename->vla-object EC)"CENTER2")
  77.     )
  78.   )
  79.       )
  80.       ((= code 3)      ; 鼠标左键
  81.        (redraw)
  82.        (setq loop nil)
  83.       )
  84.       ((= code 2)      ; 鼠标左键
  85.        (redraw)
  86.        (setq loop nil)
  87.       )
  88.     )
  89.   )
  90. )

其实,没啥用,lisp函数grread的缺陷,没办法支持捕捉,只能看着好玩。想要精准捕捉,还是要net或者c++

本帖子中包含更多资源

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

x
回复

使用道具 举报

发表于 2023-6-16 22:04 | 显示全部楼层
看你这三个图红色中心线总长度不相等吧,动态拖动总长度可变?
回复

使用道具 举报

 楼主| 发表于 2023-6-17 08:03 | 显示全部楼层
ssyfeng 发表于 2023-6-16 22:04
看你这三个图红色中心线总长度不相等吧,动态拖动总长度可变?

总长度是相等的,就是用户输入的指定值长度,拖动不变,总长度等于输入值
回复

使用道具 举报

发表于 2023-6-17 08:17 来自手机 | 显示全部楼层
1.拖动描述不清楚,怎么拖动?夹点拖动?。2.长度保持不变,谁可以变?圆弧,直线?
回复

使用道具 举报

 楼主| 发表于 2023-6-17 09:02 | 显示全部楼层
本帖最后由 戏男 于 2023-6-17 09:07 编辑
liuhe 发表于 2023-6-17 08:17
1.拖动描述不清楚,怎么拖动?夹点拖动?。2.长度保持不变,谁可以变?圆弧,直线?

F:\5象这样,能以中心点变化更好

本帖子中包含更多资源

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

x
回复

使用道具 举报

发表于 2023-6-30 11:23 | 显示全部楼层
戏男 发表于 2023-6-17 09:02
象这样,能以中心点变化更好

老板提了这么多需求,直接联系我打包一站式为您解决了。
回复

使用道具 举报

发表于 2023-6-30 13:23 | 显示全部楼层
动态块,固定周长
回复

使用道具 举报

 楼主| 发表于 2023-6-30 19:01 | 显示全部楼层
SdlFreeCAD 发表于 2023-6-30 11:23
老板提了这么多需求,直接联系我打包一站式为您解决了。

回复

使用道具 举报

发表于 2023-7-1 00:15 | 显示全部楼层

需要加QQ1005144760
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-6 09:41 , Processed in 0.305372 second(s), 22 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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