lucas3 发表于 2022-7-5 23:48:52

谁能帮我查一下

代码操作不正常,画一个铅标签,但只有标签,没有铅!
为什么?谁能帮我修改非常感谢。
 
正常,应该像这张照片!
Dim编号。LSP

pBe 发表于 2022-7-5 23:54:01

好奇的是,你在哪里得到你发布的lucas3的所有iisp代码?奇怪的是,在代码的任何地方我都看不到作者的名字,在这种情况下。。
 
.
 
我想说的是,为什么不问问原作者或者在源网站上发布你的问题来修改代码呢?

lucas3 发表于 2022-7-5 23:58:28

 
我理解你的问题
不知道作者在哪里,其他人都转发到BBS,我下载并使用,但不正常,在源网站上,有人问了同样的问题,但没有人回答!

lucas3 发表于 2022-7-5 23:59:52

请帮帮我!
 
(vl-load-com)
      
(setq *ActiveDocument*
      (vla-get-ActiveDocument
      (vlax-get-acad-object)
      ) ;_ end of vla-get-ActiveDocument
) ;_ end of setq
(setq *ModelSpace*
      (vla-get-ModelSpace
      *ActiveDocument*
      ) ;_ end of vla-get-ModelSpace
) ;_ end of setq
(setq *AcadBlock*
      (vla-get-blocks
      *ActiveDocument*
      ) ;_ end of vla-get-blocks
) ;_ end of setq

;;;Creat Num block with attribute
(defun Creat_Num_block (TextHight    radius          /
                cirPnt             blockObj          circleObj
                attributeObj
             )
(setq cirPnt (list radius radius 0.0))
(setq        blockObj   (vla-add *AcadBlock*
                      (vlax-3d-point cirPnt)
                      "num"
             )
circleObj    (vla-AddCircle
             blockObj
             (vlax-3d-point cirPnt)
             radius
             )
attributeObj
             (vla-AddAttribute
             blockObj
             TextHight
             acAttributeModeVerify
             ""
             (vlax-3d-point cirPnt)
             "nums"
             ""
             )
)
(vla-put-Alignment attributeObj acAlignmentMiddle)
(if (> (setq v (distof (substr (getvar "acadver") 1 3))) 16.2)
   (vla-put-TextAlignmentPoint
   attributeObj
   (vlax-3d-point cirPnt)
   )
)
(vla-Update attributeObj)
)

(defun draw_leader (pt1 pt2 / leaderobj) ;draw leader
(command "leader" pt1 pt2 "f" "st" "f" "a" "" "" "n")
(setq leaderobj (vlax-ename->vla-object (entlast)))
(vla-put-ArrowheadType leaderobj acArrowDotSmall)
(vla-Update leaderobj)
leaderobj
)

;;;set Attributes
(defun SetAtts (Obj Lst / AttVal)
(mapcar
   '(lambda (Att)
      (if (setq AttVal (cdr (assoc (vla-get-TagString Att) Lst)))
(vla-put-TextString Att AttVal)
      )
    )
   (vlax-invoke Obj "GetAttributes")
)
(vla-update Obj)
(princ)
)

;;;Get numbers of block reference Objectin ModelSpace
(defun Get_blkRef_Num (blkRef_name / count objEnt)
(setq count 0)
(vlax-for objEnt *ModelSpace*
   (if        (equal (vla-get-ObjectName objEnt) "AcDbBlockReference")
   (progn (if (equal (vla-get-Name objEnt) blkRef_name)
       (setq count (1+ count))
   )
   )
   )
)
count
)

;;;check if have "num" block exist
(defun check_num_block (/)
(if (ssget "X"
   '((0 . "INSERT")
       (2 . "num")
      )
   )
   T
   nil
)
)

;;;--------------------------------------------------------------------;
;;;       Function:set-params-obj                                    ;
;;;                                                                  ;
;;;    Description:This function sets the parameters required      ;
;;;                  to associate a dimension object               .   ;
;;;                                                                  ;
;;;      Arguments:                                                    ;
;;;      vla-blk_bef = a valid vla blk_bef object.                     ;
;;;      vla-leader = a valid vla leader object.                     ;
;;;                                                                  ;
;;; Returned Value:coordinates to the leader object.               ;
;;;                                                                  ;
;;;          Usage:                                                    ;
;;;            (set-params-obj                                       ;
;;;               vla-blk_befvla-leader                            ;
;;;               )                                                    ;
;;;--------------------------------------------------------------------;
(defun set-params-obj
      (vla-blk_bef vla-leader / ins-pnt lead-pnt1 lead-pnt2 sca rad)
(if (and (= (type vla-blk_bef) 'VLA-OBJECT)
   (vlax-read-enabled-p vla-blk_bef)
   )
   (progn
   (setq ins-pnt (vla-get-InsertionPoint vla-blk_bef))
   (if (eq (type ins-pnt) 'VARIANT)
(if (> (vlax-variant-type ins-pnt) 8192)
(setq
    ins-pnt (vlax-safearray->list (vlax-variant-value ins-pnt))
)
)
   )
   (setq sca                (vla-get-XScaleFactor vla-blk_bef)
    rad         (vlax-ldata-get vla-blk_bef "radius")
    lead-pnt1        (vlax-curve-getstartpoint vla-leader)
    lead-pnt2        (polar ins-pnt (angle ins-pnt lead-pnt1) (* sca rad))
    Coordinates        (append lead-pnt1 lead-pnt2)
   )
   )
)
)
;;;--------------------------------------------------------------------;
;;;       Function:UPDATE-PARAMETER-MDIM                           ;
;;;                                                                  ;
;;;    Description:This function is responsible for updating a       ;
;;;                  vla-object's parameter.                           ;
;;;                                                                  ;
;;;      Arguments:                                                    ;
;;;         vla-obj = a valid vla object.                              ;
;;;      par-name = a parameter name.                              ;
;;;       par-value = a new parameter value                            ;
;;;                                                                  ;
;;; Returned Value:A vla object.                                     ;
;;;                                                                  ;
;;;          Usage:                                                    ;
;;;            (update-parameter-mdim                              ;
;;;               vla-objpar-name par-value                        ;
;;;               )                                                    ;
;;;--------------------------------------------------------------------;
(defun update-parameter-mdim (vla-obj par-name par-value)
(if (and (= (type vla-obj) 'VLA-OBJECT)
   (vlax-write-enabled-p vla-obj)
   (not (equal (vlax-get vla-obj par-name) par-value))
   )
   (vlax-put vla-obj par-name par-value)
)
)

;;;--------------------------------------------------------------------;
;;;       Function:UPDATE-LEADER                                     ;
;;;                                                                  ;
;;;    Description:This function updates the "coordinate" property   ;
;;;                  for the leader object.                            ;
;;;                                                                  ;
;;;      Arguments:                                                    ;
;;;         notifier = a valid vla object.                           ;
;;;         obj-list = a list of vla object.                           ;
;;;                                                                  ;
;;; Returned Value:An updated leader object.                         ;
;;;                                                                  ;
;;;          Usage:                                                    ;
;;;            (update-leader                                        ;
;;;                   notifier obj-list                              ;
;;;               )                                                    ;
;;;--------------------------------------------------------------------;
(defun update-leader
             (notifier obj-list        / vla-blk_bef vla-leader)
(setq        vla-blk_bef (nth 0 obj-list)
vla-leader(nth 1 obj-list)
)
(if (set-params-obj vla-blk_bef vla-leader)
   (update-parameter-mdim vla-leader "Coordinates" Coordinates)
)
)

;;;--------------------------------------------------------------------;
;;;       Function:reactor-leader_blk_bef                           ;
;;;                                                                  ;
;;;    Description:This function will be called inside               ;
;;;                  :vlr-modified event.                              ;
;;;                                                                  ;
;;;                  Required Functions:                               ;
;;;                         update-leader-for-blk_bef                  ;
;;;                                                                  ;
;;;      Arguments:                                                    ;
;;;      notifier = a valid vla object. Filled in by the calling   ;
;;;                   reactor.                                       ;
;;;         reactor = a valid vlr object reactor. Filled in by the   ;
;;;                   calling reactor.                                 ;
;;;      arg-list = argument list filled in by the calling reactor.;
;;;                   Filled in by the calling reactor.                ;
;;;                                                                  ;
;;; Returned Value:A valid vla object.                        ;
;;;                                                                  ;
;;;          Usage:Intended to be called from a reactor call back.   ;
;;;       (reactor-leader_blk_bef notifier reactor arg-list)          ;
;;;--------------------------------------------------------------------;
(defun reactor-leader_blk_bef (notifier reactor arg-list)
(update-leader notifier (vlr-data reactor))
)

;;;--------------------------------------------------------------------;
;;;                     main Function                                 ;
;;;--------------------------------------------------------------------;

(defun c:draw_numbers (/          vla-leader TextHight        radius
             sca          loop1             loop2        pt0
             vla-blkref count             count_str        att_lst
             vla-leader sp             source        Points
             reactor
              )
(setvar "CMDECHO" 0)
(setq        TextHight 5
radius 5
sca 1
loop1 T
)

(if (not (check_num_block))
   (Creat_Num_block TextHight radius)
)
(while loop1
   (if        (setq pt0
       (getpoint
       "\nPick up a point (Enter & MouseRight exit):"
       )
)
   (progn
(setq vla-blkref
               (vla-InsertBlock
                   *ModelSpace*
                   (vlax-3d-point pt0)
                   "num"
                   sca
                   sca
                   sca
                   0
               )
      count       (Get_blkRef_Num "num")
      count_str       (itoa count)
      att_lst       (list (cons '"nums" count_str))
      loop2       T
)
(SetAtts vla-blkref att_lst)
(setq vla-leader (draw_leader pt0 (polar pt0 0 0.001)))

(prompt "\nConfirm number place:")

(while loop2
(setq        sp   (grread T)
        source (car sp)
        sp   (cadr sp)
) ;_ end setq
(cond        ((= source 5)
       (vla-put-InsertionPoint vla-blkref (vlax-3d-point sp))
       (setq
           Points
          (vlax-safearray-fill
              (vlax-make-safearray
                vlax-vbdouble
                '(0 . 5)
              )
              (append pt0
                      (polar sp (angle sp pt0) (* radius sca))
              )
          )
       )

       (if (> (distance sp pt0) (* radius sca))
           (vla-put-coordinates vla-leader Points)
       )
        )
        (t
       (progn        (setq loop2   nil
                      obj-lst (list vla-blkref vla-leader)
                )
                (vlax-ldata-put vla-blkref "radius" radius)

                (function reactor-leader_blk_bef)
                (setq reactor
                     (VLR-Object-reactor
                       obj-lst
                       obj-lst
                       '((:vlr-modified . reactor-leader_blk_bef))
                     )
                )
       )
        )
)
)
   )
   (setq loop1 nil)
   )
)
(princ)
)

lucas3 发表于 2022-7-6 00:03:03

我需要帮助!

ReMark 发表于 2022-7-6 00:05:10

是的,我们明白了,卢卡斯。请记住,有些人将要休假(许多会员庆祝圣诞节),这里的每个人都是志愿者,因此我们没有报酬来回答您的问题。试着表现出一些耐心。
 
顺便说一句,我刚刚使用AutoCAD 2014测试了lisp例程。它的工作原理与视频剪辑中显示的方式相同。再试一次。

lucas3 发表于 2022-7-6 00:08:10

 
谢谢你的评论!你在那里正常运转吗

ReMark 发表于 2022-7-6 00:12:55

我跑得正常吗?取决于你问谁。我正在运行纯AutoCAD 2014。我使用英制和公制模板测试了例程。它在两种情况下都有效。

marko_ribar 发表于 2022-7-6 00:16:08

如果我理解正确,请添加此行(蓝色)并根据需要更改值(红色):
 

(defun draw_leader (pt1 pt2 / leaderobj) ;draw leader
(command "leader" pt1 pt2 "f" "st" "f" "a" "" "" "n")
(setq leaderobj (vlax-ename->vla-object (entlast)))
(vla-put-ArrowheadType leaderobj acArrowDotSmall)
(vla-put-Arrowheadsize leaderobj (/ TextHight 1.0))
(vla-Update leaderobj)
leaderobj
)

ReMark 发表于 2022-7-6 00:20:11

OP在哪里问的?
页: [1] 2
查看完整版本: 谁能帮我查一下