明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1080|回复: 6

[讨论] 求助,修改langjs大师的快速对齐视图源码失败,求教请进!

[复制链接]
发表于 2018-10-27 14:40:43 | 显示全部楼层 |阅读模式
      大家好,在网上找到langjs大师的快速移动对齐视图原码,就试着修改下想让它变成拉伸对齐,就把里面的"move" 改为 “stretch",结果不成功,又试着改了几次还是没成功,还请langjs大师及各位兄弟帮心完善下,谢谢!

;;; ==================================
;;; 快速拉伸对齐视图(基准线为直线或多段线)
;;; 作者:langjs             命令:sy
;;; ==================================
(defun c:sy (/ bk en ent ent1 name pmax pmin pt pt0 pt1 pt2 sc snap ss ss1 vh vw)
  (setq ss (ssget)
pt (getpoint "\n指定基点:")
en (entsel "\n选择基准线:")
pt0 (cadr en)
name (car en)
ent (entget name)
  )
  (setq snap (getvar "osmode"))
  (setvar "osmode" 0)
  (setvar "cmdecho" 0)
  (cond
    ((= (cdr (assoc 0 ent)) "LINE")
      (setq pt1 (cdr (assoc 10 ent))
     pt2 (cdr (assoc 11 ent))
      )
    )
    ((= (cdr (assoc 0 ent)) "LWPOLYLINE")
      (setq vh (getvar "viewsize")
     sc (getvar "screensize")
     bk (getvar "APERTURE")
     vw (* vh (/ bk (cadr sc)))
     pmin (list (- (car pt0) (* 0.5 vw)) (- (cadr pt0) (* 0.5 vw)))
     pmax (list (+ (car pt0) (* 0.5 vw)) (+ (cadr pt0) (* 0.5 vw)))
      )
      (command ".explode" name)
      (setq ss1 (ssget "c" pmin pmax)
     ent1 (entget (ssname ss1 0))
     pt1 (cdr (assoc 10 ent1))
     pt2 (cdr (assoc 11 ent1))
      )
      (command ".UNDO" "")
    )
  )
  (command ".xline" pt1 pt2 "")
  (setq ent (entlast))
  (redraw ent 3)
  (setvar "osmode" snap)
  (command ".STRETCH" ss "" pt pause)
  (entdel ent)
  (princ)
)


"觉得好,就打赏"
还没有人打赏,支持一下
发表于 2018-10-27 18:11:51 | 显示全部楼层
看看是不是想要的
;;; ==================================
;;; 快速拉伸对齐视图(基准线为直线或多段线)
;;; 作者:langjs             命令:sy
;;; ==================================
(defun c:sy (/ en ent i n name obj p p1 p2 pp pt pt1 pt2 ss)
  (vl-load-com)
  (setvar "cmdecho" 0)
  (if (setq p1 (getpoint "\n指定第一点:"))
    (if (setq p2 (getcorner p1 "\n窗交对象:指定对角点:"))
      (if (setq ss (ssget "c" p1 p2))
        (progn
          (repeat (setq i (sslength ss))
            (redraw (ssname ss (setq i (1- i))) 3)
          )
          (if (setq pt (getpoint "\n指定基点:"))
            (if (setq en (entsel "\n选择基准线:"))
              (progn
                (setq name (car en)
                      p (cadr en)
                      ent (entget name)
                )
                (cond
                  ((= (cdr (assoc 0 ent)) "LINE")
                    (setq pt1 (cdr (assoc 10 ent))
                          pt2 (cdr (assoc 11 ent))
                    )
                  )
                  ((= (cdr (assoc 0 ent)) "LWPOLYLINE")
                    (setq obj (vlax-ename->vla-object name)
                          pp (vlax-curve-getclosestpointto obj (trans p 1 0))
                          n (fix (vlax-curve-getparamatpoint obj pp))
                          pt1 (vlax-curve-getpointatparam obj n)
                          pt2 (vlax-curve-getpointatparam obj (1+ n))
                    )
                  )
                )
                (command ".xline" pt1 pt2 "")
                (setq ent (entlast))
                (redraw ent 3)
                (command "_.stretch" "c" p1 p2 "" pt pause)
                (entdel ent)
              )
            )
            (if ss
              (repeat (setq i (sslength ss))
                (redraw (ssname ss (setq i (1- i))) 4)
              )
            )
          )
        )
      )
    )
  )
  (princ)
)

评分

参与人数 1明经币 +1 收起 理由
cj52000 + 1 很给力!

查看全部评分

回复 支持 1 反对 0

使用道具 举报

 楼主| 发表于 2018-10-28 19:37:41 | 显示全部楼层
langjs 发表于 2018-10-27 18:11
看看是不是想要的
;;; ==================================
;;; 快速拉伸对齐视图(基准线为直线或多段线) ...

太感谢langjs大师了
发表于 2018-11-2 09:20:37 | 显示全部楼层
langjs大师好久没出山了
发表于 2018-11-2 09:43:57 | 显示全部楼层
不知道咋用的哦
发表于 2018-11-2 12:47:03 | 显示全部楼层
怎么用呢 能录制一个gif吗
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2025-5-11 19:27 , Processed in 0.206857 second(s), 31 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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