飞雪神光 发表于 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之后才会显示加载成功。
页: 1 2 3 4 [5]
查看完整版本: 新开一帖,谁能帮写一下,怎么能把拉伸命令和‘cal组合起来一起用呢?