明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 2615|回复: 15

[提问] [已解答] 图框手动自动比例插入

[复制链接]
发表于 2020-12-21 20:52:46 | 显示全部楼层 |阅读模式
本帖最后由 wuwubaibai 于 2020-12-24 22:18 编辑

小弟我在网络上找了自动插入图框
但插入的图框比例因为不是整数
所以想加一条可手动切换比例
但改了许久还是无法成功~烦请各位大大帮忙
"原码为pf工具箱"的经过修改如下
也想让标注形式跟着比例一起变化~原本型式是 STANDARD-2 因不会把比例带入后面只好把  STANDARD- 拿掉,不知是否可以把STANDARD-(输入的倍数)
麻烦各位大大帮帮忙感恩
(defun c:frr()
  (setq mylayer (getvar "clayer"))
  (setq layname1 (substr mylayer 1 2))
  (setq layname2 (strcat layname1 "0"))
  (if(setq ed1 (tblsearch "LAYER" layname2))
    (progn
      (setq ed2 (cdr (assoc 70 ed1)))
      (cond
        ((= ed2 0)  (command "layer" "on" layname2 ""))
        ((= ed2 1)  (command "layer" "t" layname2 "on" layname2 ""))
        ((= ed2 4)  (command "layer" "u" layname2 "on" layname2 ""))
        ((= ed2 5)  (progn (command "layer" "t"  str3 "u" layname2 "on" layname2 "")))
      )
   )   
   (setq layname2 "0")
  )
  (command "layer" "s" layname2 "")
  (PRINC "\n】--自动横向图框 ")(PRINC)
  (setq pt1 (getpoint "请选择图形左上角:\n"))
  (setq pt2 (getcorner pt1 "请选择图形右下角:\n"))
  (setq disx (abs (- (car pt1) (car pt2))))
  (setq disy (abs (- (cadr pt1) (cadr pt2))))
  (setq acx  (/ disx 297.00))
  (setq acy  (/ disy 165.00))
  (if (> acy acx)
      (setq acx acy)
  )
   (setq acx (*  (fix (+ (*  acx 10) 0.9999)) 0.1))
;;;;;;;;;;;;;;;;;;;;以下是我自加
(princ "\n")
(setq   tishi (strcat "请输入缩放比例,使用推荐比例请直接输入空格<" (rtos acx 2 1) ">:"))
(setq scaleget (getreal   tishi))
(if (= scaleget nil)
     (progn
           (setq sc acx)
     )
     (progn
           (setq sc  scaleget)
     )
)
;;;;;;;;;;;;;;;;;;;;以上是我自加
  (setq pt0 (list (/ (+ (car pt1 ) (car pt2) (* (- 0 8) acx)) 2.00)
                  (/ (+ (cadr pt1) (cadr pt2) (* (- 0 23.6) acx)) 2.00)))
  (setq os (getvar "osmode"))
  (setvar "osmode" 0)
  (setvar "attreq" 0) ;关闭属性对话框
  (command "-insert"  "图框外" pt0 "x" acx "" "" "" "" "" "" "" "" "" "" ""
          acc  "" "" ""  "" )
(command "explode" "l") ;炸开插入的图块
;;;;;;;;;;;;;;;;;;;;以下是我自加
(setq sa (rtos acx 2 0))
  (setvar (command "-dimstyle" "r" sa ""))
  (setq sb (0.3* acx 2 0))
  (setvar (command "-dimscale"  sb ""))
;;;;;;;;;;;;;;;;;;;;以上是我自加
(setvar "attreq" 1) ;打开属性对话框
  (setvar "osmode" os)
发表于 2020-12-22 13:43:19 | 显示全部楼层
代码好乱,也没有你的图框,大概改了下

(defun c:tt5(/ acx acy disx disy dsty ed1 ed2 layname1 layname2 mylayer os pt0 pt1 pt2 sc scaleget tishi)
  (setq mylayer (getvar "clayer"))
  (setq layname1 (substr mylayer 1 2))
  (setq layname2 (strcat layname1 "0"))
  (if(setq ed1 (tblsearch "LAYER" layname2))
    (progn
      (setq ed2 (cdr (assoc 70 ed1)))
      (cond
        ((= ed2 0)  (command "layer" "on" layname2 ""))
        ((= ed2 1)  (command "layer" "t" layname2 "on" layname2 ""))
        ((= ed2 4)  (command "layer" "u" layname2 "on" layname2 ""))
        ((= ed2 5)  (progn (command "layer" "t"  str3 "u" layname2 "on" layname2 "")))
      )
                )
                (setq layname2 "0")
  )
  (command "layer" "s" layname2 "")
  (PRINC "\n】--自动横向图框 ")(PRINC)
  (setq pt1 (getpoint "请选择图形左上角:\n"))
  (setq pt2 (getcorner pt1 "请选择图形右下角:\n"))
  (setq disx (abs (- (car pt1) (car pt2))))
  (setq disy (abs (- (cadr pt1) (cadr pt2))))
  (setq acx  (/ disx 297.00))
  (setq acy  (/ disy 165.00))
  (if (> acy acx)
                (setq acx acy)
  )
        (setq acx (*  (fix (+ (*  acx 10) 0.9999)) 0.1))
        (princ "\n")
        (setq   tishi (strcat "请输入缩放比例,使用推荐比例请直接输入空格<" (rtos acx 2 1) ">:"))
        (setq scaleget (getreal   tishi))
        (if (= scaleget nil)
                (progn
                        (setq sc acx)
                )
                (progn
                        (setq sc  scaleget)
                )
        )
  (setq pt0 (list (/ (+ (car pt1 ) (car pt2) (* (- 0 8) sc)) 2.00)
                                                        (/ (+ (cadr pt1) (cadr pt2) (* (- 0 23.6) sc)) 2.00)))
  (setq os (getvar "osmode"))
  (setvar "osmode" 0)
  (setvar "attreq" 0) ;关闭属性对话框
  (command "-insert"  "图框外" pt0 "x" sc "" "" "")
        (command "explode" "l") ;炸开插入的图块
        (if (tblsearch "DIMSTYLE" (setq dsty (strcat "STANDARD-" (rtos sc 2 0))))
                (command "dimstyle"   "r" dsty ) (command "dimscale"  sc "dimstyle" "s" dsty) )
        (setvar "attreq" 1) ;打开属性对话框
  (setvar "osmode" os)
        (princ)
)
回复 支持 1 反对 0

使用道具 举报

发表于 2020-12-23 14:31:31 | 显示全部楼层
本帖最后由 sunny_8848 于 2020-12-24 07:58 编辑
start4444 发表于 2020-12-23 14:15
默认比例应该就是自动计算的,没仔细看,你可以问下楼主

程序只自动计算了水平方向的比例,能帮忙加下也自动计算高度方向的比例吗程序里面有数据297和165,是用来计算横向和纵向比例的?程序只算了横向的缩放比例。既然插入的是块,也可以输入纵向放大比例的,这样插入的图框协调些。自己不会改才发信息的

点评

你意思应该是想保证图框包含所选的范围,那把高和宽都算一下,哪个比例更大就选取哪个,加个条件判断就可以了,你自己可以完成的  发表于 2020-12-23 16:01
发表于 2020-12-21 21:38:16 | 显示全部楼层
帮顶,好想法
发表于 2020-12-22 10:21:51 | 显示全部楼层
帮顶,,想法真好,您看一下,这个贴子能不能帮上您,这个是固定的矩形框输入比例放大,您看一下您能否借鉴改一下
http://bbs.mjtd.com/thread-182146-1-1.html
 楼主| 发表于 2020-12-22 22:07:57 | 显示全部楼层
本帖最后由 wuwubaibai 于 2020-12-22 22:11 编辑
start4444 发表于 2020-12-22 13:43
代码好乱,也没有你的图框,大概改了下

(defun c:tt5(/ acx acy disx disy dsty ed1 ed2 layname1 layna ...


谢谢大大~完美解决问题~非常感谢~感謝再感謝
 楼主| 发表于 2020-12-22 22:12:05 | 显示全部楼层
999999 发表于 2020-12-22 10:21
帮顶,,想法真好,您看一下,这个贴子能不能帮上您,这个是固定的矩形框输入比例放大,您看一下您能否借鉴 ...

谢谢大大的回复~start4444大大完美了解决了问题~
发表于 2020-12-23 09:22:25 | 显示全部楼层
start4444 发表于 2020-12-22 13:43
代码好乱,也没有你的图框,大概改了下

(defun c:tt5(/ acx acy disx disy dsty ed1 ed2 layname1 layna ...

要是能根据点选的矩形范围长宽分别计算放大比例就更好了
发表于 2020-12-23 14:15:17 | 显示全部楼层
sunny_8848 发表于 2020-12-23 09:22
要是能根据点选的矩形范围长宽分别计算放大比例就更好了

默认比例应该就是自动计算的,没仔细看,你可以问下楼主
发表于 2020-12-24 12:23:13 | 显示全部楼层
帮顶,好想法
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2025-5-17 14:28 , Processed in 0.194111 second(s), 27 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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