明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
楼主: cq4920

[源码] 一键显示视口比例

  [复制链接]
发表于 2023-2-14 15:54:49 | 显示全部楼层
cq4920 发表于 2023-2-14 14:56
(setq scale (/ (cdr(assoc 45 ent))(cdr(assoc 41 ent))))
(if (< scale 1)  
(progn

  请教大佬,把大佬回复的码替换原来的码                                                                                                               
    (setq scale(/ (cdr(assoc 45 ent))(cdr(assoc 41 ent))))
    (setq scale(/ (fix(* scale 1000000)) 1000000.))
          (setq scale (strcat "SC=1:"(rtos scale 2 0)"" ))                                                                                
         后显示存在缺陷,然后在大佬回复的码后加了个)显示: 参数类型错误: numberp: nil, 不知道怎么弄了
 楼主| 发表于 2023-2-14 16:44:02 | 显示全部楼层
tfanghui 发表于 2023-2-14 15:54
请教大佬,把大佬回复的码替换原来的码                                                             ...

出现种问题,应该是字符类型的问题,有的需要转成字符串 有的需要转成实数 还有的需要转成整数

点评

大佬你的电脑上可以正常使用吗?  发表于 2023-2-14 17:30

评分

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

查看全部评分

回复 支持 1 反对 0

使用道具 举报

发表于 2023-6-3 04:18:17 | 显示全部楼层
本帖最后由 KO你 于 2023-6-7 02:04 编辑
kucha007 发表于 2022-11-7 14:17
上一句控制位置,下一句控制文字(大小、对齐方式等等)。自己改改玩一下吧

请问以下代码要怎么修改文字为右对齐

快捷键  svv  视口比例显示
(defun c:svv( / ss entnam scale maxpoint #g pmax ent scale )
(vl-load-com)
(if (null (tblsearch "layer" "视口比例"))
(progn
(asdf2)
(entmake (list '(0 . "LAYER")
'(100 . "AcDbSymbolTableRecord")
'(100 . "AcDbLayerTableRecord")
(CONS 6 "Continuous")
(cons 62 6)
'(370 . 0)
'(70 . 0)
(cons 2 "视口比例")))
(setq SS (ssget "_x" (list '(0 . "VIEWPORT")(cons 410 (getvar 'ctab));当前布局
'(-4 . "<NOT")
'(69 . 1);忽略当前视口
'(-4 . "NOT>"))))
(while
(> (sslength ss) 0)
(progn
(setq entnam (ssname ss 0))
(setq ent (entget entnam))
(setq scale(/ (cdr(assoc 45 ent))(cdr(assoc 41 ent))))
(setq scale(/ (fix(* scale 1000000)) 1000000.))
(setq scale (strcat "SC=1:"(rtos scale 2 0)"" ))
(vla-getboundingbox (vlax-ename->vla-object entnam) 'minpoint 'maxpoint)
(setq pmax (vlax-safearray->list maxpoint)
pmin (vlax-safearray->list minpoint))
(setq PT1 (list (- (car pmax) 0) (+ (cadr pmin) 0)))               
(McTEXT pt1 0 5 scale);插入单行文字 点,角度,高度,文字内容,
(setq #g (entget (entlast)))
(setq #g (subst (cons 8 "视口比例") (assoc 8 #g) #g))
(entmod #g);刷新图元
(setq ss (ssdel entnam ss)))
(princ)))
(command "LAYDEL" "N" "视口比例" "" "Y" ))
(vla-delete (vla-item (vla-get-textstyles (vla-get-activedocument(vlax-get-acad-object))) "视口比例")) )
(defun asdf2 ()
(vl-load-com)
(setq ThisDrawing(vla-get-activedocument (vlax-get-acad-object)))
(Setq TextStyles(vla-get-TextStyles ThisDrawing))
(Setq TextStyle(vla-add TextStyles "视口比例"))
(vla-SetFont TextStyle "黑体" :vlax-false :vlax-false 1 0)
(princ))
;插入单行文字 点,角度,高度,文字内容,
(defun McTEXT(pt ang th tx /)
(entmakex (list '(0 . "TEXT")
(cons 1 TX)
(cons 40 th)
(cons 10 pt)
(cons 11 pt)
(cons 7 "视口比例")
(cons 51 ang)))
(princ))
发表于 2023-6-4 07:15:46 | 显示全部楼层
kucha007 发表于 2022-11-11 03:14
感谢大佬的无私分享,根据前面的讨论调整了一下,继续分享出来。

能重新上传下吗?下载不了 显示错误
发表于 2023-6-5 10:35:55 | 显示全部楼层
感谢大佬分享~
发表于 2023-7-4 06:48:36 | 显示全部楼层
chenry676 发表于 2022-11-7 15:46
谢谢!目前使用发现遇到一个问题,比例不整数的时候,是四舍五入,是否能做到是整数的时候保留整数,不是整 ...

我改写了,见我新帖
发表于 2023-10-24 14:28:33 | 显示全部楼层
kucha007 发表于 2022-9-21 23:39
多谢楼主回复。我又根据自己的思路改了一下:1-我的图层较多,删除图层容易卡,所以还是维持之前的思路:只 ...

不错的,很好的
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-9-28 21:13 , Processed in 0.158254 second(s), 21 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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