明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1189|回复: 7

[源码] 求助关于U型孔角度问题

[复制链接]
发表于 2013-8-7 21:37:37 | 显示全部楼层 |阅读模式
我把角度改成用鼠标左右键选取的时候,左键的就没问题,右键的角度就不对了,不知道是哪里出错了?
把 (setq j (getangle "\n 输入旋转角度:"))和
(setq pt (getpoint "\n左键0°,右键90°"))
(if pt (setq j 0) (setq j 90))
都去掉之后,可以用鼠标动态控制角度,但中心线又出不来,要怎么改呢?
诚望指点

(defun c:q1(/ os a b d ang p1 aa p2 p3 bb p4 p5 p6 pp qq)
  (setq os (getvar "osmode"))
  (setvar "osmode" 0)
  (setq b (getdist "\n请输入腰孔的宽度:"))
  (setq a (getdist "\n请输入腰孔的长度:"))
  (setq k (* 0.05 a));中心线伸出长度
  (setq d (- a b))

;  (setq j (getangle "\n 输入旋转角度:"))

(setq pt (getpoint "\n左键0°,右键90°"))
(if pt (setq j 0) (setq j 90))

  (setq p1 (getpoint "\n请指定腰孔的中心点:"))
  (setq aa (/ d 2.0) p2 (polar p1 0 aa) p3 (polar p1 pi aa) bb (/ b 2.0))
  (setq p4 (polar p3 (* pi 1.5) bb) p5 (polar p2 (* pi 1.5) bb) p6 (polar p3 (* pi 0.5) bb))
  (command "layer" "m" 0 "l" "continuous" 0 "c" 7 0  "")
 (command "ltscale" 5);设置线型比例
  (command "pline" p4 "w" "0" "0" p5 "a" "ce" p2 "a" "180" "l" p6 "a" "ce" p3 "a" "180" "l" "")
  (command "rotate" "l" "" p1 (* (/ 180 pi) j))

  (command "layer" "m" 5 "l" "center" 5 "c" 1 5 "")
 (command "ltscale" 5);设置线型比例
  (command "line" (polar p3 (- pi) (+ (* b 0.5) k)) (polar p2 (* pi 0) (+ (* b 0.5) k)) "")
  (command "rotate" "l" "" p1 (* (/ 180 pi) j))
  (command "line" (polar p3 (+ (* pi 0.5)) (+ (* b 0.5) k)) (polar p3 (* pi 1.5) (+ (* b 0.5) k)) "")
  (command "rotate" "l" "" p1 (* (/ 180 pi) j))
  (command "line" (polar p2 (+ (* pi 0.5)) (+ (* b 0.5) k)) (polar p2 (* pi 1.5) (+ (* b 0.5) k)) "")
  (command "rotate" "l" "" p1 (* (/ 180 pi) j))
  (setvar "osmode" os)
(princ))
"觉得好,就打赏"
还没有人打赏,支持一下
发表于 2013-8-7 22:24:23 | 显示全部楼层
Command: (* (/ 180 pi) j)
5156.62

Command: (* (/ pi 180) j)
1.5708

不过建议 J ==> (* Pi  0.5)

评分

参与人数 1明经币 +1 收起 理由
669423907 + 1 谢谢指点

查看全部评分

 楼主| 发表于 2013-8-8 11:07:06 | 显示全部楼层
Andyhon 发表于 2013-8-7 22:24
Command: (* (/ 180 pi) j)
5156.62

Andyhon长老,谢谢您的关注。请问这两个是什么意思呢?
Command: (* (/ 180 pi) j)
5156.62

Command: (* (/ pi 180) j)
1.5708


J ==> (* Pi  0.5)是指(setq j (* Pi  0.5))吗?
发表于 2013-8-8 11:28:47 | 显示全部楼层
(command "rotate" ...)
此处角度 0-360

(if pt (setq j 0) (setq j 90))
J 值别换算了...
---------------------------------------------
但建议直接依条件换算出点位绘制
不建议绘制后多一道 旋转

 楼主| 发表于 2013-8-8 17:33:12 | 显示全部楼层
Andyhon 发表于 2013-8-8 11:28
(command "rotate" ...)
此处角度 0-360

谢谢Andyhon长老,这样改行了,只是有时候,当窗口缩得很小时,中心线不会超出U型孔。
不知Andyhon长老方不方便帮添加记忆功能呢,
当不输入宽和长的时候,自动为上一次的值,谢谢您了

(defun c:uk()
(command "undo" "be")

;(setq os (getvar "osmode"))
;(setvar "osmode" 0)

(setq b (getdist "\n请指定U型孔的宽度:"))
(setq a (getdist "\n请指定U型孔的长度:"))
(setq k (* 0.05 a));中心线伸出长度
(setq d (- a b))

(setq dj (getpoint "\n左键0°,右键90°"))
(if dj (setq j 0)(setq j (* pi 0.5)))

(setq p1 (getpoint "\n请指定U型孔的中心点:"))
(setq aa (/ d 2.0) p2 (polar p1 0 aa) p3 (polar p1 pi aa) bb (/ b 2.0))
(setq p4 (polar p3 (* pi 1.5) bb) p5 (polar p2 (* pi 1.5) bb) p6 (polar p3 (* pi 0.5) bb))

(command "pline" p4 "w" "0" "0" p5 "a" "ce" p2 "a" "180" "l" p6 "a" "ce" p3 "a" "180" "l" "")
(command "rotate" "l" "" p1 (* (/ 180 pi) j))
(command "chprop" (entlast) "" "p" "la" (getvar "clayer") "ltscale" (* 0.5 b) "")

(setq la (getvar"clayer"))
(command "layer" "m" "3中心线" "c" "1" "" "lw" "0.13" "" "lt" "CENTER" "" "" "clayer" la)

(command "line" (polar p3 (- pi) (+ (* b 0.5) k)) (polar p2 (* pi 0) (+ (* b 0.5) k)) "")
(command "rotate" "l" "" p1 (* (/ 180 pi) j))
(command "chprop" (entlast) "" "p" "la" "3中心线" "ltscale" (* 0.5 b) "")

(command "line" (polar p3 (+ (* pi 0.5)) (+ (* b 0.5) k)) (polar p3 (* pi 1.5) (+ (* b 0.5) k)) "")
(command "rotate" "l" "" p1 (* (/ 180 pi) j))
(command "chprop" (entlast) "" "p" "la" "3中心线" "ltscale" (* 0.5 b) "")

(command "line" (polar p2 (+ (* pi 0.5)) (+ (* b 0.5) k)) (polar p2 (* pi 1.5) (+ (* b 0.5) k)) "")
(command "rotate" "l" "" p1 (* (/ 180 pi) j))
(command "chprop" (entlast) "" "p" "la" "3中心线" "ltscale" (* 0.5 b) "")

(command "undo" "e")

;(setvar "osmode" os)
(princ))
发表于 2013-8-8 17:57:37 | 显示全部楼层
函数 坛子里有...

引用例
http://bbs.mjtd.com/thread-45891-1-1.html
6#

(setvar "osmode" 0)
关了有副作用底...

 楼主| 发表于 2013-8-9 11:46:34 | 显示全部楼层
Andyhon 发表于 2013-8-8 17:57
函数 坛子里有...

引用例

调一下位置,就可以了
(setq p1 (getpoint "\n请指定U型孔的中心点:"))

(setq os (getvar "osmode"))
(setvar "osmode" 0)
发表于 2023-7-6 13:10:10 | 显示全部楼层
669423907 发表于 2013-8-9 11:46
调一下位置,就可以了
(setq p1 (getpoint "\n请指定U型孔的中心点:"))

谢谢楼主!带记忆功能实现了吗
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-11-16 22:34 , Processed in 0.273686 second(s), 29 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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