明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 3699|回复: 11

把"框选自动调出图框的程序"完善一下

  [复制链接]
发表于 2010-12-26 22:44 | 显示全部楼层 |阅读模式
5明经币
http://bbs.mjtd.com/thread-84595-2-1.html   上Gu_xl 的源码挺好,那位大哥能完善一下:1、可以连续插入?2、同时长宽的比例强制是图纸长宽(420/297)的比例?同时在框选的是横向时插入正常图框;框选的是竖向是把图框旋转-90.(竖向图框)3、是副能实现完毕后自动弹出图框中属性对话框,以便填写:图名、图号、日期等

发表于 2010-12-29 21:40 | 显示全部楼层
我用的是VBA
回复

使用道具 举报

发表于 2011-1-6 17:56 | 显示全部楼层
用这个试试

本帖子中包含更多资源

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

x
回复

使用道具 举报

发表于 2011-1-26 21:17 | 显示全部楼层

本帖子中包含更多资源

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

x
回复

使用道具 举报

 楼主| 发表于 2011-1-26 22:43 | 显示全部楼层
楼上的是卖程序的,这里可能不欢迎的
回复

使用道具 举报

发表于 2011-1-29 11:39 | 显示全部楼层
本帖最后由 Gu_xl 于 2011-1-29 11:40 编辑

  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.   )
回复

使用道具 举报

发表于 2011-2-13 17:02 | 显示全部楼层
感谢Gu_xl 版主的程序
它解决了我图框只能水平插块不能垂直插块的问题
谢谢你!
回复

使用道具 举报

发表于 2011-2-14 11:07 | 显示全部楼层
为什么我用的时候,插入的图框总有角度,不是水平的啊
回复

使用道具 举报

发表于 2011-3-15 20:12 | 显示全部楼层
你的问题现在解决了吗?没有解决的话我可能可以帮上你。
回复

使用道具 举报

发表于 2012-12-8 16:27 | 显示全部楼层
Gu_xl 发表于 2011-1-29 11:39

受用了。。感谢一下!
LISP看起来很厉害,可惜脑瓜子不开窍。。学不了~
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-5-18 06:35 , Processed in 0.254642 second(s), 21 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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