QQ登录

只需一步,快速开始

登录 | 注册 | 找回密码

三维网

 找回密码
 注册

QQ登录

只需一步,快速开始

展开

通知     

查看: 1580|回复: 4
收起左侧

[已解决] 如何实现一组文字填表的功能??

[复制链接]
发表于 2007-5-28 15:20:06 | 显示全部楼层 |阅读模式 来自: 中国江苏南京

马上注册,结识高手,享用更多资源,轻松玩转三维网社区。

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

x
不知道是使用lisp还是别的什么东西,只要能实现如下的功能!
$ z7 p0 s0 t$ e  S& N" R就是将一单行文字,填在一个由四个直线组成的方框内,四个直线如果不密封,要提示!9 s0 F) ^2 p+ ?
填写的时候,必须填写在这个方框的正中间) H, n# L" R/ r. M; ^! V- y
过程:命令-----选择文字----确认(右键)---选择表格内任意一点----文字就会自动移动到正中4 k6 A0 P( g  i/ y* k, q
如果多行文本也可以,那就最好了!
4 z9 v9 }5 s3 N7 l5 |5 a可以参照:( L! M# F+ W* |& |! v8 s2 w# s0 I
机械工程师CAD中有这个功能:一组文字填表" O9 R( T( _# E* j% F7 |
-----------------------------------" n3 W& l6 x( ]6 l
选择文字:
. y9 t: Y  L2 m# H5 D: c选择对象: 找到 1 个
- [. }! R: ~3 J# {0 ?0 b, `/ _选择对象:# P% {5 ]1 E8 L3 S5 B# e( v  Z; G
点取表内一点:
, j- n1 R! e+ t6 |--------------------------------------
发表于 2007-5-28 16:07:41 | 显示全部楼层 来自: 中国广东深圳

:_)

这个确实可以用LISP来实现,不过这个需要时间,$ t+ A1 G2 z  B$ k! ^! f3 {
呵呵,我现在太忙了,根本没有时间去想,不过你可以到明经通道里面去找,可能会有人帮你,呵呵
发表于 2007-5-30 11:52:10 | 显示全部楼层 来自: 中国四川成都
我编过这个程序,呵呵,不过很久没用了看能不能找到。& P( j) O/ S6 ?, n
我现在用的是选中一批文字,让它们对齐,让它们以一定间距竖向排列(以表高度),然后一起移到合适位置就可以了。
 楼主| 发表于 2007-6-1 12:00:10 | 显示全部楼层 来自: 中国江苏南京
下面是机械工程师内,相关lisp文件内的代码!!
+ z, v. o* N9 W--------------------------------------
" K: a$ M9 C1 f9 ~(PRESTOREOLDSYSARG)) (DEFUN LSP_YZWZTB (/ E E1 E2 E3 E4 EL ENA I LL PADFUN PL PT PT1 PT2 SS SSLEN STR TF X1 X2 Y1 Y2) (PSAVEOLDSYSARG)
/ X4 @+ ^" A* O# P" V/ a(DEFUN WZTB_ERROR (s) (PRINC "程序退出." (PRINC)) (setq *error* WZTB_ERROR); S) A0 U  g; X: H9 d* B
(PXL_AUTO_LOAD (QUOTE CMXX1) "sshide") (PRINC "\n选择文字:") (IF (SETQ SS (SSGET)) (PROGN (SETQ I 0 SSLEN (SSLENGTH SS)) (WHILE (< I SSLEN) (SETQ E2 (SSNAME SS I) I (1+ I) EL (ENTGET E2) ENA (CDR (ASSOC 0 EL))) (IF (= ENA "TEXT") (PROGN (REDRAW E2 3) (SETQ TF 1) (WHILE TF (INITGET 6) (IF (NULL (SETQ PT (GETPOINT "\n点取表内一点:"))) (SETQ TF nil) (PROGN (IF C:BPOLY (SETQ E (C:BPOLY PT)) (PROGN (SETQ E3 (ENTLAST)) (COMMAND "._boundary" PT "") (SETQ E4 (ENTLAST)) (IF (NULL (EQUAL E3 E4)) (SETQ E E4)))) (IF (NULL E) (PROGN (IF (SETQ L1 (C:PMXX1)) (PROGN (SETQ PT1 (CADR L1) PT2 (CADDR L1)) (PXL_LIST_TEXT1 PT1 PT2 E2)))) (PROGN (SETQ E1 E) (SETQ EL (ENTGET E)) (IF (= (STRCASE (CDR (ASSOC 0 EL))) "LWPOLYLINE") (PROGN (SETQ PL nil) (FOREACH ITEM EL (IF (= (CAR ITEM) 10) (SETQ PL (CONS (CDR ITEM) PL))))) (PROGN (SETQ E (ENTNEXT E) PL nil) (WHILE (= (PENAME E) "VERTEX") (SETQ PL (CONS (CDR (ASSOC 10 (ENTGET E))) PL) E (ENTNEXT E))))) (ENTDEL E1) (IF (/= (LENGTH PL) 4) (ALERT "表格不是由四条线组成, 不能标注.") (PROGN (DEFUN PADFUN (ITEM) (CAR ITEM)) (SETQ PL (PAD3 PL PADFUN)) (SETQ X1 (CAR (CAR PL)) X2 (CAR (LAST PL))) (DEFUN PADFUN (ITEM) (CADR ITEM)) (SETQ PL (PAD3 PL PADFUN)) (SETQ Y1 (CADR (CAR PL)) Y2 (CADR (LAST PL))) (SETQ PT2 (LIST X1 Y1) PT1 (LIST X2 Y2)) (PXL_LIST_TEXT1 PT1 PT2 E2) (SETQ TF nil))))))))))))) (PRESTOREOLDSYSARG)) (DEFUN YZWZTB1 (E2 / E E1 E2 EL ENA I L1 LL PADFUN PL PT PT1 PT2 SSLEN STR TF X1 X2 Y1 Y2) (PSAVEOLDSYSARG) (PXL_AUTO_LOAD (QUOTE C:PMXX1) "sshide") (PRINC "\n选择文字:") (IF (SETQ SS (SSGET)) (PROGN (SETQ I 0 SSLEN (SSLENGTH SS)) (WHILE (< I SSLEN) (SETQ E2 (SSNAME SS I) I (1+ I) EL (ENTGET E2) ENA (CDR (ASSOC 0 EL))) (IF (= ENA "TEXT") (PROGN (REDRAW E2 3) (SETQ TF 1) (WHILE TF (IF (NULL (SETQ L1 (C:PMXX1))) (SETQ TF nil) (PROGN (SETQ PT1 (CADR L1) PT2 (CADDR L1)) (PXL_LIST_TEXT1 PT1 PT2 E2) (SETQ TF nil))))))))) (PRESTOREOLDSYSARG))
% S/ p9 [9 ?! T: ~& O+ Y--------------------------------------
发表于 2007-6-6 20:25:05 | 显示全部楼层 来自: 中国北京
谢谢楼主,帮忙顶以下
发表回复
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Licensed Copyright © 2016-2020 http://www.3dportal.cn/ All Rights Reserved 京 ICP备13008828号

小黑屋|手机版|Archiver|三维网 ( 京ICP备2023026364号-1 )

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