badsinpter 发表于 2012-12-2 03:10

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

有一个lsp自己写的,因为是刚刚入门所以基本上都是错误的,希望有人能帮我纠正

(defun C:jx(/ ss len p1 p2 o1 o2 o3 o4)
    (setq ss (ssget))      ;得到一批文字
        (setq len (sslength ss))   ;得到一共选择文字的数目
        (setq a (entget ss) ;将ss的文字变成数组
       (setq o1 (+ (cdr (assoc 10 a))) ;将每个文字的x坐标赋值给o1
          (setq o2 (* (o1 (car len)) 1.0));得到每个文字的x坐标的平均值赋值给o2
       (setq o3 (+ (cdr (assoc 20 a)));将每个文字的y坐标赋值给o3
          (setq o4 (* (o3 (car len)) 1.0));得到每个文字的y坐标的平均值赋值给o4

if(progn
                   (cond ((=o1 (cdr (assoc 10 ss))(setq p1 o3)(setq p2 (o2+1)));如果每个文字x坐标的平均值与每个文字相同 那么就得到y值 p1 和 p2
(cond ((=o4 (cdr (assoc 20 ss))(setq p1 (o1+1))(setq p2 o4)))));如果每个文字y坐标的平均值与每个文字相同 那么就得到x值 p1 和 p2
(command "._mirror" ss "" p1 p2 "y")根据文字组中线镜像,并删除原有文字组
    )
)
(princ)
)
我知道里面很多都不对
希望有人能帮我一下,先谢谢大家了
目标是变成下图这样
选择其中一组数,变成右边的那组

badsinpter 发表于 2012-12-3 14:37

自己修改了一下
defun C:jx(/ ss len a o1 o2 o3 o4 p1 p2);定义参数
(setq ss (ssget));选取文本
(setq ss (ssadd));选取文本
(setq len (sslength ss));读取文本长度
(setq a (entget ss));将文本变成一个合集
(setq o1 (+ (cadr (assoc 10 a))));得到文本插入点x坐标的和
(setq o2 (/ (o1 len)));求的x坐标的平均值
(setq o3 (+ (cadr (assoc 20 a))));得到文本插入点y标的和
(setq o4 (/ (o3 len))))));求的y标的平均值
if(=1 1)(progn
(cond ((=(assoc 10 ss) o2)((setq p1 polar(o1,o3)) (setq p2 polar(o1,(+(o3 1))))如果x坐标相同,则按照Y的平均值的那条线镜像
(cond ((=(assoc 2 ss) o4)((setq p1 polar((+(o2 1),o3)) (setq p2 polar(o2,o3)))如果y标相同,则按照x平均值的那条线镜像
(command "._mirror" ss "" p1 p2 "y")
(princ)

badsinpter 发表于 2012-12-3 20:01

自己顶,来个人帮个忙啊

badsinpter 发表于 2012-12-3 22:06

自己顶,来个人帮个忙啊

cexoidtf38 发表于 2012-12-4 08:50

楼主是菜鸟,我是什么都不懂啊

zwj19850918 发表于 2013-4-23 22:09

我是菜鸟,不能自己发帖,来楼主处借个地方。
求助:怎样在多段线上找到距离起点指定距离的点,用lsp实现,即:输入多段线及指定距离,返回所求点的坐标。
望各位帮个忙,谢谢!
页: [1]
查看完整版本: 一个非常菜的lsp菜鸟希望得到帮助,诚心感谢