oonan 发表于 2022-7-5 15:44:34

帮助-无函数定义:

你好,大师。
 
这个lisp需要你的帮助,这是我的旧lisp,可以从对象中获取区域,但在autocad 2016中不起作用,我认为这是在bpoly函数中,但我不知道如何修复错误:“无函数定义:vlax ename->vla object”
 
(vl-load-com)
(defun arear (clave / nentpoly area os listapolys caso 2dacadena contador0 contador1 *Error*)

(DEFUN *ERROR* (msg)
    (PRINC "Error >> ")
    (princ msg)
   (if (= msg "Function cancelled")
   (arearmistake1)
   (arearmistake2))
          (quit)
    )

   (defun arearmistake1 ()
          (alert "\nFuncion Cancelada")
          (setvar "osmode" os)
          (foreach caso listapolys (entdel caso))
          (setvar "cecolor" colorant)
          (setvar "Clayer" CapaActual)
          (princ)
   )

   (defun arearmistake2 ()
          (alert "\nEl contorno no esta Cerrado")
          (setvar "osmode" os)
          (foreach caso listapolys (entdel caso))
          (setvar "cecolor" colorant)
          (setvar "Clayer" CapaActual)
          (princ)
   )

          (setq CapaActual (getvar "Clayer"))

(if   (null (tblobjname "STYLE" "R-80"))
(entmake '((0 . "STYLE")(100 . "AcDbSymbolTableRecord")(100 . "AcDbTextStyleTableRecord")
            (2 . "R-80")(70 . 0)(40 . 0.18)(3 . "ROMANS")))
)


(if   (null (tblobjname "LAYER" "A-TEXTOS 10"))
(entmake '((0 . "LAYER")(100 . "AcDbSymbolTableRecord")(100 . "AcDbLayerTableRecord")
         (2 . "A-TEXTOS 10")(70 . 0)(62 . 10)(370 . -3)))
)

         (setq contador0 0)
         (setq contador1 0)
         (setq area 0.0
               os   (getvar "osmode"))
         (setvar "osmode" 4)
         (setq colorant (getvar "cecolor"))
         (setvar "cecolor" "201")

(While
         (setq nentpoly (bpoly (getpoint "\n<Indique punto(s)>(intro para terminar):")))

         (redraw nentpoly 3)

         (setq contador0 (1+ contador0))         
         (setq area (+ area (vlax-curve-getArea (vlax-ename->vla-object nentpoly)))
               listapolys (cons nentpoly listapolys))
         (princ (strcat (fnum area) " m2"))
         (setq contador1 (1+ contador1))
         (setq areax (vlax-curve-getArea (vlax-ename->vla-object nentpoly)))
         (princ (strcat "\n(AREA " CLAVE ""(itoa contador0)") (ACUMULADO: " (fnum area) " m2) " "(PARCIAL: " (fnum areax) " m2)"))
)
         (setq areac (fnum area))
         (prompt (strcat "\nAREA TOTAL DE " clave ": " areac " m2"))(terpri)
         (setvar "cecolor" colorant)
         (entmake (list '(0 . "TEXT")'(100 . "AcDbEntity")'(8 . "A-TEXTOS 10")'(100 . "AcDbText")
                        '(62 . 256)'(10 0.0 0.0 0.0)(cons 40 0.18)(cons 1 (strcat clave " = " areac "m2"))
                        '(50 . 0.0)'(41 . 1)'(51 . 0.0)'(7 . "R-80")'(72 . 2)
                        (cons 11 (getpoint "\n<Punto para colocar el texto>"))'(210 0.0 0.0 1.0)'(100 . "AcDbText")'(73 . 1)))
         (foreach caso listapolys (entdel caso))
         (setvar "osmode" os)
(prin1)
)



(defun fnum(num)
(setq f 2)                                                   ;redondea a 2 decimales
(setq int (rtos num 2 f)
      pos (vl-string-search "." int)
      pos (if pos pos (strlen int))
      fp(substr int (+ pos 2) (strlen int))
      int (substr int 1 pos))
(while (< (strlen fp) f) (setq fp (strcat fp "0")))
(repeat (/ pos 3)
          (setq int (strcat (substr int 1 (- pos 3))
                     ","
                     (substr int (- pos 2) (strlen int)))
          pos (- pos 3)))
(vl-string-left-trim ","
(if (zerop f) int(strcat int "." fp))
)
)

(defun c:CRP ()   (arear "CARPETA ASFÁLTICA"))


 
谢谢你的关注。

ronjonp 发表于 2022-7-5 16:03:55

将(vl load com)添加到代码中。

Lee Mac 发表于 2022-7-5 16:07:53

请参见此处:
http://www.cadtutor.net/forum/showthread.php?1390-如何在此存档中使用LISP例程&p=339645&viewfull=1#post339645

rlx 发表于 2022-7-5 16:15:16

由于OP代码的第一行以(vl load com)开头,我的第一个想法是检查是否首先加载了visual lisp函数(vl.arx)。
 
 
p、 我们的功能在我的电脑(autocad 2016)上运行,因此您可能需要(重新)安装/启用vlisp

oonan 发表于 2022-7-5 16:25:17

多亏了大家的努力,但(vl加载com)才刚刚开始
所以我只能复习vl。但是我不知道怎么做

rlx 发表于 2022-7-5 16:41:43

启动visual lisp编辑器vlisp时,如果成功加载visual lisp库并加载vl load com,则“vl catch all apply”等命令应以蓝色显示。如果没有,您可能应该重新安装AutoCAD或在系统中搜索vl。arx并通过菜单加载:工具->autolisp->加载应用程序
 
 
gr.Rlx

rlx 发表于 2022-7-5 16:51:05

此外,样式的创建失败,因此文本对象的创建也将失败。对代码进行了一些小修改。
 
 
gr.Rlx
CRP。LSP
页: [1]
查看完整版本: 帮助-无函数定义: