MastroLube 发表于 2022-7-5 18:44:22

Xrecord不';t创建

大家好,很高兴再次见到你们!
 
我在创建这个xrecord时遇到了一个问题:
 
(setq anXrec (entmakex '((0 . "XRECORD")
                               (100 . "AcDbXrecord")
                               (300 . posizione)
                        (301 . altezza)
                               (302 . larghezza)
                        (303 . colore_cordolo)
                       
                        (280 . n_superiore)
                        (281 . phi_superiore)
                       
                               (282 . n_inferiore)
                        (283 . phi_inferiore)
                       
                               (284 . phi_staffa)
                        (285 . passo_staffa)
                        (286 . n_legature)
                       
                               )
                  )
       )
 
http://i.imgur.com/3YVYA3F.png
 
数据应该是一致的,对吗?也许entmake不接受这种类型的sytax。。有人能给我一个建议吗?
 
谢谢
丹尼斯

MastroLube 发表于 2022-7-5 19:13:39

我正在尝试使用(缺点)计算表达式,但我得到一个错误
 
这是完整的脚本:
(defun c:cordoli/cordoli/aggiungi_cordolo#OnClicked (/)
(dcl-ComboBox-AddString cordoli/cordoli/n_tipo_cordoli (dcl-Control-GetText cordoli/cordoli/nome))


(setq nome (dcl-Control-GetText cordoli/cordoli/nome)
posizione (dcl-Control-GetText cordoli/cordoli/posizione)
   altezza (dcl-Control-GetText cordoli/cordoli/altezza)
   larghezza (dcl-Control-GetText cordoli/cordoli/larghezza)
;;COLORE
   colore_cordolo (dcl-Control-GetText cordoli/cordoli/colore_cordolo)
estensione (dcl-Control-GetText cordoli/cordoli/estensione)
   
   
   n_superiore (atoi (dcl-Control-GetText cordoli/cordoli/n_superiore))
   phi_superiore (atoi (dcl-Control-GetText cordoli/cordoli/phi_superiore))
   n_inferiore (atoi (dcl-Control-GetText cordoli/cordoli/n_inferiore))
   phi_inferiore (atoi (dcl-Control-GetText cordoli/cordoli/phi_inferiore))
   phi_staffa (atoi (dcl-Control-GetText cordoli/cordoli/phi_staffa))
   passo_staffa (atoi (dcl-Control-GetText cordoli/cordoli/passo_staffa))
   
   n_legature (atoi (dcl-Control-GetText cordoli/cordoli/n_legature))
   
   )
(get-or-make-Xrecord nome)

);this sets the variables

;//////////////////////////////


(defun get-or-create-Dict (/ adict)

;;test if "Cordoli" is already present in the main dictionary
(if (not (setq adict (dictsearch (namedobjdict) "Cordoli")))

   ;;if not present then create a new one and set the main
   ;; dictionary as owner
   (progn

   (setq adict (entmakex '((0 . "DICTIONARY")(100 . "AcDbDictionary"))))

   ;;if succesfully created, add it to the main dictionary
   (if adict (setq adict (dictadd (namedobjdict) "Cordoli" adict)))
   )

   ;;if present then just return its entity name
   (setq adict (cdr (assoc -1 adict)))

)

)


(defun get-or-make-Xrecord ( nome / adict anXrec nome)

(cond

   ;;first get our dictionary. Notice that "Cordoli" will be
   ;;created here in case it doesn't exist
   ((setq adict (get-or-create-Dict))

    (cond

      ;;if "Cordoli" is now valid then look for "Cordoli" Xrecord
      ((not (setq anXrec (dictsearch adict nome)))

       ;;if "Cordoli" was not found then create it
       (setq anXrec (entmakex '((0 . "XRECORD")
                               (100 . "AcDbXrecord")

                        (cons 300 posizione)
                        (cons 301 altezza)
                               (cons 302larghezza)
                        (cons 303colore_cordolo)
                       
                        (cons 280n_superiore)
                        (cons 281phi_superiore)
                       
                               (cons 282n_inferiore)
                        (cons 283phi_inferiore)
                       
                               (cons 284phi_staffa)
                        (cons 285passo_staffa)
                        (cons 286n_legature)                       
                               )
                  )
       )

       ;;if creation succeeded then add it to our dictionary
       (if anXrec (setq anXrec (dictadd adict nome anXrec)))
      )

      ;;if it's already present then just return its entity name
      (setq anXrec

       (cdr (assoc -1 (dictsearch adict nome)))
      )
    )
   )
)
)


 
谢谢

ymg3 发表于 2022-7-5 19:35:47

您需要cons包含变量的行
 

(setq anXrec (entmakex (list   '(0 . "XRECORD")
                              '(100 . "AcDbXrecord")
                               (cons 300 posizione)
                        (cons 301altezza)
                               (cons 302larghezza)
                        (cons 303colore_cordolo)
                       
                        (cons 280n_superiore)
                        (cons 281phi_superiore)
                       
                               (cons 282n_inferiore)
                        (cons 283phi_inferiore)
                       
                               (cons 284phi_staffa)
                        (cons 285passo_staffa)
                        (cons 286n_legature)
                       
                               )
                  )
       )

MastroLube 发表于 2022-7-5 19:53:35

非常感谢你!它起作用了!
 
如何删除xrecord?改变它的价值观?
 
谢谢
页: [1]
查看完整版本: Xrecord不';t创建