明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 17060|回复: 60

求框选自动调出图框的程序?

    [复制链接]
发表于 2010-12-12 17:15:39 | 显示全部楼层 |阅读模式
各位好:

          想求一程序,就是在CAD里面任意框选一下,图框就跟着出来了,大小就和
框选的一样,图框也是事先做好的,这样就不用老是缩放图框,提高效率,谢谢!
"觉得好,就打赏"
还没有人打赏,支持一下
发表于 2011-1-28 18:44:33 | 显示全部楼层
本帖最后由 Gu_xl 于 2011-1-28 18:54 编辑

回复 cj52000 的帖子

  1. ;;;(tk 图块名) 2010.12.14 By Gu_xl
  2. (defun tk(tkname p1 p2 /  pp1 pp2 v h v1 h1 xscale yscale)
  3.   
  4.   (setq pp1 (mapcar '(lambda (x)(apply 'min x))  (apply 'mapcar (cons 'list (list p1 p2))))
  5.         pp2 (mapcar '(lambda (x)(apply 'max x))  (apply 'mapcar (cons 'list (list p1 p2))))
  6.         v (- (cadr pp2) (cadr pp1))
  7.         h (- (car pp2) (car pp1))
  8.         )
  9.   (if (> h v)
  10.       (setq v (/ h (/ 420. 297.)))
  11.       (setq h (/ v  (/ 420. 297.)))
  12.       )
  13.   (command "insert" tkname pp1 1 1 0)
  14.   (setq en (entlast))
  15.   (vla-getboundingbox (vlax-ename->vla-object en) 'p1 'p2)
  16.   (setq pl (mapcar 'vlax-safearray->list (list p1 p2)))
  17.   (setq p1 (vlax-safearray->list p1)
  18.         p2 (vlax-safearray->list p2)
  19.         v1 (- (cadr p2) (cadr p1))
  20.         h1 (- (car p2) (car p1))
  21.         )
  22.   (cond ((and (> h v) (>= h1 v1))
  23.           (setq        xscale (/ h h1)
  24.                 yscale (/ v v1)
  25.                 rot 0
  26.           )
  27.         )
  28.         ((and (> h v) (>= v1 h1))
  29.           (setq        yscale (/ h v1)
  30.                 xscale (/ v h1)
  31.                 rot -90
  32.           )
  33.         )
  34.         ((and (> v h) (>= v1 h1))
  35.           (setq        xscale (/ v v1)
  36.                 yscale (/ h h1)
  37.                 rot 0
  38.           )
  39.         )
  40.         ((and (> v h) (>= h1 v1))
  41.           (setq        yscale (/ v h1)
  42.                 xscale (/ h v1)
  43.                 rot 90
  44.           )
  45.         )
  46.         )
  47.   (entdel en)
  48.   (command "insert" tkname pp1 xscale yscale rot)
  49.   (setq en (entlast))
  50.     (vla-getboundingbox (vlax-ename->vla-object en) 'p1 'p2)
  51.   (setq pl (mapcar 'vlax-safearray->list (list p1 p2)))
  52.   (setq p1 (vlax-safearray->list p1)
  53. p2 (vlax-safearray->list p2)
  54. )
  55.   (command "move" en "" p1 pp1)
  56.   (setq obj (vlax-ename->vla-object en))
  57.   (if (= :vlax-true (vla-get-HasAttributes obj))
  58.     (command "eattedit" en)
  59.     )
  60. (princ)
  61.   )
  62. ;;;测试
  63. (defun c:tk()
  64.   (setq oldcmdecho (getvar "cmdecho"))
  65.   (setq attreq (getvar "attreq"))
  66.   (setvar "cmdecho" 0)
  67.   (setvar "attreq" 0)
  68.   (setq blkname (getstring "\n输入要插入的图框名称:"))
  69.   (while (and (setq p1 (getpoint "\n插入图框角点:"))
  70.               (setq p2 (GETCORNER p1 "图框另一角点")
  71.               )
  72.          )
  73.   (tk blkname p1 p2)
  74.     )
  75.   (setvar "cmdecho" oldcmdecho)
  76.   (setvar "attreq" attreq)
  77.   (princ)
  78.   )
回复 支持 3 反对 0

使用道具 举报

发表于 2010-12-14 22:08:09 | 显示全部楼层
回复 bai2000 的帖子

要连续插入,加个while循环即可,长宽的比例强制是图纸长宽(420/297)的比例,你可以根据X方向来强制Y方向,也可以根据y方向来强制X方向!至于弄对话框,是很麻烦的,因为图框里的属性不固定,需要动态自动生成对话框!简单起见,你可以在命令行里录入属性,根据我的提示,你自己可以慢慢尝试修改,来达到自己的需求,这样编程水平才会提高,不要总想着别人给你做好完美的代码给你!这里只是技术交流的地方!
回复 支持 1 反对 0

使用道具 举报

发表于 2023-12-15 20:09:20 | 显示全部楼层
Gu_xl 发表于 2010-12-14 12:33
回复 ljttjl 的帖子

这么简单的程序你也要编译发上来么?

版主,插入图框角点:图框另一角点; 错误: no function definition: VLAX-ENAME->VLA-OBJECT
这个是怎么回事 啊
发表于 2010-12-12 22:13:08 | 显示全部楼层
标准图框是什么样子的,发个dwg图形例子看看。
发表于 2010-12-12 23:16:45 | 显示全部楼层
这很简单啊!任意框选得到框选的长宽尺寸,根据要插入图框的固定图框尺寸,计算插入图块的X Y方向比例尺,插入图块即可!这么简单的程序楼主自己应该能够写出来吧!
发表于 2010-12-13 15:13:57 | 显示全部楼层
本帖最后由 xiaxiang 于 2010-12-13 15:15 编辑

这个应该比较简单,代码一时找不到,先发效果图

本帖子中包含更多资源

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

x
 楼主| 发表于 2010-12-13 15:15:14 | 显示全部楼层
回复 ljttjl 的帖子

回ljttjl兄,标准图框已上传,请查看附件!谢谢!

本帖子中包含更多资源

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

x
 楼主| 发表于 2010-12-13 15:17:15 | 显示全部楼层
回复 Gu_xl 的帖子

惭愧啊,对LISP略懂皮毛,见笑了!
 楼主| 发表于 2010-12-13 16:42:22 | 显示全部楼层
回复 xiaxiang 的帖子

兄弟,能否分享下你的程序啊!
发表于 2010-12-14 00:56:38 | 显示全部楼层
本帖最后由 ljttjl 于 2010-12-14 01:04 编辑

框选自动调出图框程序


此程序演示如下:


本帖子中包含更多资源

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

x
发表于 2010-12-14 02:05:03 | 显示全部楼层
本帖最后由 bai2000 于 2010-12-14 21:15 编辑

楼上能不能改一下:1、可以连续插入?2、同时长宽的比例强制是图纸长宽(420/297)的比例?3、是副能实现完毕后自动弹出属性对话框,以便填写:图名、图号、日期等
 楼主| 发表于 2010-12-14 10:47:56 | 显示全部楼层
回复 ljttjl 的帖子

回ljttjl兄,如果我换了一个图框,是不是直接替换掉现在标准图框DWG?谢谢!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-11-25 13:42 , Processed in 0.277031 second(s), 29 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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