明经CAD社区

 找回密码
 注册

扫一扫,访问微社区

QQ登录

只需一步,快速开始

查看: 307|回复: 10

[提问] 如图,请教各位老师多边形如何单向缩放?

[复制链接]
发表于 2018-7-12 10:10 | 显示全部楼层 |阅读模式
请教各位老师多边形如何单向缩放?

本帖子中包含更多资源

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

x
发表于 2018-7-12 10:37 | 显示全部楼层
做成块以后改x或y比例
 楼主| 发表于 2018-7-12 10:51 | 显示全部楼层
谢谢!请问具体怎么操作?
发表于 2018-7-12 20:12 | 显示全部楼层
你应该是会lsp的
结合command命令
实现要求应该不难吧
 楼主| 发表于 2018-7-12 22:08 | 显示全部楼层
非常感谢各位,东拼西凑如下,请各位老师指正,谢谢!!!

(defun c:tt ( / Vosmode ent pts pt1 pt2 cpt1 cpt2 clen xlen bl blna ss tmp)
  (setq Vosmode (getvar "osmode"))
  (setq ent (entsel "\n多边形底边:"))
  (setq cpt1 (getpoint "\n多边形顶点:"))
  (if (= PoGaoDu nil) (setq PoGaoDu 2000))
  (setq tmp (getint (strcat "\n抬起高度(mm)<" (itoa PoGaoDu) ">:")))
  (if tmp (setq PoGaoDu tmp) (setq PoGaoDu PoGaoDu))
  (setq pts (selpt ent))
  (setq pt1 (car pts))
  (setq pt2 (cadr pts))
  (setq cpt2 (perPoint cpt1 pt1 pt2))
  (setq clen (distance cpt1 cpt2))
  (setq xlen (sqrt (+ (* clen clen) (* PoGaoDu PoGaoDu))))
  (setq bl (/ xlen clen))
  (command ".UNDO" "BE")
  (if ent
    (progn
      (setvar "osmode" 0)
      (setq blna "BlockName")
      (if (= (tblsearch "BLOCK" blna) nil)
        (command "-block" blna pt1 ent "")
        (command "-block" blna "Y" pt1 ent "")
      )
    )
  )
  (command "-insert" blna pt1 "" "" "")
  (setq ent (entlast))
  (if (= (fix (car pt1)) (fix (car pt2)))
    (entmod (append (entget ent) (list (cons 41 bl))))
    (entmod (append (entget ent) (list (cons 42 bl))))
  )
  (command "explode" ent "")
  (setq ss (ssget "p"))
  (command "._Pedit" "M" SS "" "J" "1" "")
  (command "_.chprop" (entlast) "" "_la" (getvar "clayer") "_c"  (getvar "cecolor") "")
  (if (= (fix (car pt1)) (fix (car pt2)))
    (progn
      (if (> (fix (car pt1)) (fix (car cpt1)))
        (command "_move" (entlast) "" pt1 (strcat "@" (rtos (- xlen clen) 2 5) ",0"))
        (command "_move" (entlast) "" pt1 (strcat "@" (rtos (- clen xlen) 2 5) ",0"))
      )
    )
    (progn
      (if (> (fix (cadr pt1)) (fix (cadr cpt1)))
        (command "_move" (entlast) "" pt1 (strcat "@0," (rtos (- xlen clen) 2 5)))
        (command "_move" (entlast) "" pt1 (strcat "@0," (rtos (- clen xlen) 2 5)))
      )
    )
  )
  (command ".UNDO" "E")
  (if Vosmode (setvar "osmode" Vosmode))
  (princ)
)
 楼主| 发表于 2018-7-12 22:09 | 显示全部楼层
需要这么复杂吗?
发表于 2018-7-12 22:45 来自手机 | 显示全部楼层
跟我想像的有点不太一样啊  
发表于 2018-7-12 22:48 来自手机 | 显示全部楼层
做块  插块  缩放  改比例  炸开  应该没几句代码才对
 楼主| 发表于 2018-7-13 07:06 | 显示全部楼层
masterlong 发表于 2018-7-12 22:48
做块  插块  缩放  改比例  炸开  应该没几句代码才对

  这就是高手跟菜鸟的区别
发表于 2018-7-13 10:29 | 显示全部楼层
其实你的程序也不差了
缩放倍数是计算得来的
最后的移动也是计算出来的
因为不知道你最终要求的结果是啥
所以没法对这两部分点评

下面代码仅供参考
(defun c:tt()
        (if (and
                                (setq pt (getpoint))
                                (setq ss (ssget))
                 )
                 (progn
                                 (setvar "cmdecho" 0)
                                 (setvar "qaflags" 0)
                                 (command "undo" "g")
                                 (setq blknm (menucmd "M=$(edtime,$(getvar,date),自动块__YYMODDhhmmss)"))
                                 (command "block" blknm "non" pt ss "")
                                 (command "insert" blknm "non" pt 1 1 0)
                                 (setq ent (entlast))
                                 (command "scale" ent "" "non" pt "r" "non" pt pause pause)
                                 (entmod (list (cons -1 ent)(cons 41 1)))
                                 (entupd ent)
                                 (command "explode" ent)
                                 (setq ss (ssget "p"))
                                 (command "pedit" "m" ss "" "y" "j" 1 "")
                                 (command "undo" "e")
                 )
        )
(princ)
)
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2018-10-19 15:47 , Processed in 0.264609 second(s), 28 queries , Gzip On.

Powered by Discuz! X3.3

© 2001-2013 Comsenz Inc.

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