sbwdx 发表于 2019-11-2 14:15:18

请问这个功能LSP能实现嘛?

我想的思路,是不是可以先画一根直线,线为DOTE线型,颜色8号色,然后在直线的端点处,插入文字TEXT,内容为CL ,字高3mm,文字为中间对齐方式,对齐直线的端点,刚好是一条线,且离端点距离为2mm,角度0 ,字体ST,请老师们帮下忙,谢谢

start4444 发表于 2019-11-2 14:15:19

(defun c:tt5 (/ ang p1 p2 p3 p4)
        (if (null (tblsearch "style" "st"))
                (command "style" "st" "" "" "" "" "" "" "" ))
        (if (null (tblsearch "ltype" "dote"))
                (command "Linetype" "L" "dote""" ""))
        (setq p1 (getpoint"\n起点:") p2 (getpoint p1"\n终点:") ang (angle p1 p2) p3 (polar p2 ang 20) p4 (polar p3 ang 2))
        (entmake (list '(0 . "LINE") (cons 6 "dote") (cons 10 p1) (cons 11 p3) (cons 62 8)))
        (entmake (list '(0 . "TEXT") (cons 10 p4) (cons 11 p4) (cons 40 3) (cons 1 "CL") (cons 7 "st") (cons 72 1) (cons 73 2)))
)

sbwdx 发表于 2019-11-2 17:13:31

start4444 发表于 2019-11-2 16:58
(defun c:tt5 (/ ang p1 p2 p3 p4)
        (if (null (tblsearch "style" "st"))
                (command "style" "st" "" " ...

搞定!完美!太厉害了!

sbwdx 发表于 2019-11-2 18:04:07

sbwdx 发表于 2019-11-2 17:13
搞定!完美!太厉害了!

你好,能分别生成两个文字吗?一个C,一个L,然后位置如图

bai2000 发表于 2019-11-2 20:00:32

画完应恢复原有的线型、字型

1291500406 发表于 2019-11-2 22:52:13

本帖最后由 1291500406 于 2019-11-3 10:21 编辑

(defun C:bb (/ ID pt pt2)(defun bb_01 (en pt) (vla-move (vlax-ename->vla-objecten)(vla-get-insertionpoint
(vlax-ename->vla-objecten))(vlax-3d-point pt)))(SETQ ID T pt(getpoint "\n必强提示第一点"))
(entmake (list '(0 . "TEXT") (cons 1 "C") (cons 10 '(-2 2)) (cons 11 '(-2 2))(cons 72 1)(cons 73 2) (cons 40 3)))(setq en (entlast))
(entmake (list '(0 . "TEXT") (cons 1 "L") (cons 10 '(0 0))(cons 11 '(0 0)) (cons 72 1)(cons 73 2) (cons 40 3)))(setq en1 (entlast))
(while ID(SETQ pt2 (GRREAD T 4 0))(IF(= 5 (CAR pt2))(PROGN (grdraw pt (polar (cadr pt2) (angle (cadr pt2) pt) 2) -1)
(bb_01 en(polar(cadr pt2)(*pi 0.65) 2))(bb_01 en1(polar (cadr pt2) (* pi 1.5) 0))
(REDRAW)))(IF(OR (= 3 (CAR pt2)) (= 2 (CAR pt2))(= 11 (CAR pt2)))(PROGN
(entmake (list '(0 . "LINE") (cons 10 pt) (cons 11 (polar (cadr pt2) (angle (cadr pt2) pt) 2))))
(SETQ ID NIL)))))

lisperado 发表于 2019-11-3 08:59:53


另一个更简单方式:应用现有CL合体字体ascii/unicode
℄="\U+2104"

此方法合适于UCS,只需旋转字体vla-put-rotation或entmode (cons 50 x)


(defun c:CL (/ p1 p2 ob)
;lisperado
(or *acad* (setq *acad* (vlax-get-acad-object)))

(defun *space (doc)
    (foreach x '(ActiveDocument ActiveLayout Block) (setq doc (vlax-get doc x)))
    )

(if (and (setq p1 (getpoint "\n第一点.. "))
         (setq p2 (getpoint p1 "\n第二点.. "))
         (entmakex
             (cons '(0 . "LINE")
                   (mapcar ''((x a b) (cons a (set x (trans b 1 0)))) '(p1 p2) '(10 11) (list p1 p2))
                   )
             )
         (setq ob (vla-AddText (*space *acad*) "\U+2104" (vlax-3d-point p2) (getvar 'Textsize)))
         (vl-cmdf "_.JUSTIFYTEXT" (ssadd (entlast)) "" "_MC")
         )
    (vla-put-TextAlignmentPoint
      ob
      (vlax-3d-point (polar p1 (angle p1 p2) (+ (distance p1 p2) (getvar 'Textsize))))
      )
    (princ "用户标点无效?")
    )
(princ)
)

sbwdx 发表于 2019-11-3 15:02:01

1291500406 发表于 2019-11-2 22:52
(defun C:bb (/ ID pt pt2)(defun bb_01 (en pt) (vla-move (vlax-ename->vla-objecten)(vla-get-inserti ...

谢谢,有点复杂了,也没有达到那种效果,1楼的就是我要的那种效果,能在1L的代码的基础上改一改吗?就是再加个L字,字的位置就是4楼图片那种,这样就可以了

sbwdx 发表于 2019-11-3 15:02:53

lisperado 发表于 2019-11-3 08:59
另一个更简单方式:应用现有CL合体字体ascii/unicode
℄="%u+2104"



你好老师,这个合体字,挺好,但是L的位置可以往下来点吗?

start4444 发表于 2019-11-3 15:46:46

sbwdx 发表于 2019-11-2 18:04
你好,能分别生成两个文字吗?一个C,一个L,然后位置如图

既然知道分开两个字怎么不去了解一下代码,只要稍作修改就能达到自己的需求了

(defun c:tt5 (/ ang p1 p2 p3 p4)
      (if (null (tblsearch "style" "st"))
                (command "style" "st" "" "" "" "" "" "" "" ))
      (if (null (tblsearch "ltype" "dote"))
                (command "Linetype" "L" "dote""" ""))
      (setq p1 (getpoint"\n起点:") p2 (getpoint p1"\n终点:") ang (angle p1 p2) p3 (polar p2 ang 20) p4 (polar p3 ang 2))
      (entmake (list '(0 . "LINE") (cons 6 "dote") (cons 10 p1) (cons 11 p3) (cons 62 8)))
      (entmake (list '(0 . "TEXT") (cons 10 p4) (cons 11 p4) (cons 40 3) (cons 1 "C") (cons 7 "st") (cons 72 1) (cons 73 2)))
        (entmake (list '(0 . "TEXT") (cons 10 p4) (cons 11 p4) (cons 40 3) (cons 1 "L") (cons 7 "st") (cons 72 0) (cons 73 3)))
(princ)
)
页: [1] 2
查看完整版本: 请问这个功能LSP能实现嘛?