CAD设计论坛

 找回密码
 立即注册
论坛新手常用操作帮助系统等待验证的用户请看获取社区币方法的说明新注册会员必读(必修)
查看: 4616|回复: 5

[开发] 一个非常菜的lsp菜鸟希望得到帮助,诚心感谢

[复制链接]
发表于 2012-12-2 03:10 | 显示全部楼层 |阅读模式
有一个lsp自己写的,因为是刚刚入门所以基本上都是错误的,希望有人能帮我纠正
+ P8 J$ ~/ \: c( a
1 \1 r# }# p& h: s(defun C:jx(/ ss len p1 p2 o1 o2 o3 o4)
& b$ ]3 k% y: @  x    (setq ss (ssget))      ;得到一批文字 * i+ {& e* s) ^2 D5 R7 O
        (setq len (sslength ss))     ;得到一共选择文字的数目
* r, {4 E! a4 y6 Y' Z2 M, h        (setq a (entget ss) ;将ss的文字变成数组
: s& D1 K, r4 S8 Q' N$ Z( G4 {         (setq o1 (+ (cdr (assoc 10 a))) ;将每个文字的x坐标赋值给o16 [3 U7 ~8 D: w* y" R+ P4 C
          (setq o2 (* (o1 (car len)) 1.0));得到每个文字的x坐标的平均值赋值给o2: `6 n9 u3 \  o; Y
         (setq o3 (+ (cdr (assoc 20 a)));将每个文字的y坐标赋值给o3
* q4 C: b7 q7 }* ?          (setq o4 (* (o3 (car len)) 1.0));得到每个文字的y坐标的平均值赋值给o4: F2 s6 `9 y2 c' H. Z
6 j5 @6 r2 j; L/ i0 i
if(progn5 N' q8 J! \2 @/ X, `$ C
                   (cond ((=o1 (cdr (assoc 10 ss))  (setq p1 o3)(setq p2 (o2+1)));如果每个文字x坐标的平均值与每个文字相同 那么就得到y值 p1 和 p2
# u* o: a: t+ X& g7 j, W& Y4 F(cond ((=o4 (cdr (assoc 20 ss))  (setq p1 (o1+1))(setq p2 o4)))));如果每个文字y坐标的平均值与每个文字相同 那么就得到x值 p1 和 p2 0 \3 d  K0 r1 j1 J; Q/ f+ ~5 x
(command "._mirror" ss "" p1 p2 "y")根据文字组中线镜像,并删除原有文字组/ b5 k4 p% v+ i; k
    )
* p/ x9 @* x3 |0 T; M& Z  )
8 n2 x. G& ]% Y  (princ)
+ g% k6 D4 y3 `# L9 e)/ |- G: g6 b, q7 Y6 R0 U
我知道里面很多都不对
) X" D. B* w% x: j: X希望有人能帮我一下,先谢谢大家了
4 t/ l! W( s& o4 l: }4 n目标是变成下图这样 5 D5 X/ a* d8 ~7 ^3 P' N
选择其中一组数,变成右边的那组
9 d6 t2 t% {4 ^- X

本帖子中包含更多资源

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

x
 楼主| 发表于 2012-12-3 14:37 | 显示全部楼层
自己修改了一下; ~& k. }5 P( R+ x0 }, M" V
defun C:jx(/ ss len a o1 o2 o3 o4 p1 p2);定义参数
& Y7 P% D5 Q% M% z(setq ss (ssget));选取文本, P/ l6 }6 d! t% n
(setq ss (ssadd));选取文本: g. c, L) z* W9 Z$ A
(setq len (sslength ss));读取文本长度
- k: h! P' _" C5 A9 ^9 a8 D  D(setq a (entget ss));将文本变成一个合集
+ W$ x8 Q3 f, H(setq o1 (+ (cadr (assoc 10 a))));得到文本插入点x坐标的和
% d4 {7 U" n; [(setq o2 (/ (o1 len)));求的x坐标的平均值! d. C- p5 q: f/ y1 S
(setq o3 (+ (cadr (assoc 20 a))));得到文本插入点y标的和* W# l3 r* z( W7 l7 H
(setq o4 (/ (o3 len))))));求的y标的平均值2 v: _% y) Z. I
if(=1 1)(progn+ m/ X' v( B0 m' R+ B' p
(cond ((=(assoc 10 ss) o2)  ((setq p1 polar(o1,o3)) (setq p2 polar(o1,(+(o3 1))))如果x坐标相同,则按照Y的平均值的那条线镜像" X( B8 j. T& T2 i
(cond ((=(assoc 2 ss) o4)  ((setq p1 polar((+(o2 1),o3)) (setq p2 polar(o2,o3)))如果y标相同,则按照x平均值的那条线镜像. g( O! s4 Z1 X3 P  h$ o
(command "._mirror" ss "" p1 p2 "y")
. w$ o' e# p& ]& @' s  (princ)
 楼主| 发表于 2012-12-3 20:01 | 显示全部楼层
自己顶,来个人帮个忙啊
 楼主| 发表于 2012-12-3 22:06 | 显示全部楼层
自己顶,来个人帮个忙啊
发表于 2012-12-4 08:50 | 显示全部楼层
楼主是菜鸟,我是什么都不懂啊
发表于 2013-4-23 22:09 | 显示全部楼层
我是菜鸟,不能自己发帖,来楼主处借个地方。9 H! I  A' a9 i. u' d
求助:怎样在多段线上找到距离起点指定距离的点,用lsp实现,即:输入多段线及指定距离,返回所求点的坐标。
# k! e2 H$ i# u望各位帮个忙,谢谢!

本帖子中包含更多资源

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

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

本版积分规则

关于|免责|隐私|版权|广告|联系|手机版|CAD设计论坛

GMT+8, 2025-11-26 15:11

CAD设计论坛,为工程师增加动力。

© 2005-2025 askcad.com. All rights reserved.

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