飞雪神光
发表于 2024-1-27 20:12:07
zhufeng1004 发表于 2024-1-26 23:06
加上记忆功能记住上次拉伸距离就完美了
(defun c:tt (/ ang dis pt1 pt2 ssls)
(if (null (type c:cal))
(cond
((findfile "GEOMCAL.CRX") (ARXLOAD "GEOMCAL.CRX"))
((findfile "GEOMCAL.ARX") (ARXLOAD "GEOMCAL.ARX"))
)
)
(mapcar 'set '(ang dis) **stretch_dat**)
(or ang (setq ang 0))
(or dis (setq dis 100))
(setq pt2 nil)
(setq ssls (ssget))
(setq pt1 (getpoint (strcat "\n指定基点或默认相对基点位移量<" (rtos dis) ">: ")))
(if ssls
(progn
(if pt1
(progn
(command "_.stretch" ssls "" pt1 "non" (cal (getstring "\n输入相对基点位移量算式:")))
(setq pt2 (getvar "lastpoint"))
)
)
(if pt2
(setq **stretch_dat** (list (angle pt1 pt2) (distance pt1 pt2)))
(progn
(setq pt1 '(0 0 0) pt2 (polar pt1 ang dis))
(command "_.stretch" ssls "" "_non" pt1 "_non" pt2)
)
)
)
)
(princ)
)
zhufeng1004
发表于 2024-1-27 21:24:24
飞雪神光 发表于 2024-1-27 20:12
下面这个程序的记忆功能比较好,就是没有计算功能》》》 你的试了一下好像和我想的不一样
(defun c:ss (/ s_dis)
(command ".STRETCH" (ssget) "")
(command (setq BasicPoint (getpoint "\n指定基点:")))
(if (= nil s_dis_all)
(progn
(setq s_dis_all (getreal "\n输入拉伸距离:"))
(command s_dis_all)
)
(progn
(setq
s_dis (getreal
(strcat "\n输入拉伸距离<" (rtos s_dis_all 2 4) ">:")
)
)
(if (= nil s_dis)
(setq s_dis s_dis_all)
)
(command s_dis)
(setq s_dis_all s_dis)
)
)
)
zhufeng1004
发表于 2024-1-27 21:26:27
飞雪神光 发表于 2024-1-27 20:12
能把CAL jj加在我的下面这个程序里面吗
ljpnb
发表于 2024-1-27 22:01:43
本帖最后由 ljpnb 于 2024-1-27 22:04 编辑
;;修改了一下
(defun c:tt (/ s_dis str)
(if (null (type c:cal))
(cond
((findfile "GEOMCAL.CRX") (ARXLOAD "GEOMCAL.CRX"))
((findfile "GEOMCAL.ARX") (ARXLOAD "GEOMCAL.ARX"))
)
)
(command ".STRETCH" (ssget) "")
(command (setq BasicPoint (getpoint "\n指定基点:")))
(if (= nil s_dis_all)
(progn
(setq s_dis_all (cal (getstring "\n输入拉伸距离<>:")))
(command "non" s_dis_all)
)
(progn
(setq str (getstring
(strcat "\n输入拉伸距离<" (rtos s_dis_all 2 4) ">:")
)
)
(if (= str "")
(setq s_dis s_dis_all)
(setq s_dis (cal str))
)
(command "non" s_dis)
(setq s_dis_all s_dis)
)
)
(princ)
)
mojianxing
发表于 2024-1-27 23:05:23
不错。多谢分享
huisguiji
发表于 2024-2-28 16:35:43
lingduwx 发表于 2024-1-17 13:25
只用了拉伸命令,中间没有输入其他的,然后就是输入长度
你这是用了插件吧,正常拉伸是输入多少拉多少,你这是直接输入得这个结果
大西瓜
发表于 2024-5-5 21:29:58
拉伸到,配合TK直接输入拉伸的目标长度。根本不需要CAL计算或写代码
shujh1989
发表于 4 天前
ljpnb 发表于 2024-1-27 22:01
想请教个问题,我写的程序调用cal函数,但是打开cad第一次加载时,必然会出现cal函数错误。必须手动在命令栏输入cal,然后取消,再输入快捷键才可以继续运行。参照这个帖子的代码改了cal调用方式,还是会出现一样的问题。您知道这是怎么回事吗。GEOMCAL.ARX在手动命令栏输入cal之后才会显示加载成功。