| Правила | Регистрация | Пользователи | Поиск | Сообщения за день | Все разделы прочитаны |  Справка по форуму | Файлообменник |

Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Программа для построения аксонометрии. Несколько вопросов.

Программа для построения аксонометрии. Несколько вопросов.

Ответ
Поиск в этой теме
Непрочитано 16.05.2011, 11:30 #1
Программа для построения аксонометрии. Несколько вопросов.
Zaghim
 
Регистрация: 01.07.2010
Сообщений: 521

Друзья, пишу прогу для построения аксонометрии под свои нужды. Основу стырил на форуме, она конечно не акспро, но работает неплохо. Обрабатываю я вначале блоки (трубу, отвод, опуск, врезку и ДК кому интересно, можете стырить себе, думаю могут пригодиться!). Вначале всю схему перевожу в одну линию, потом взрываю и сохраняю слой (была отдельная тема, там решение не озвучено, но я как-то колхозно допер. Вот ссылка, если нужна: http://forum.dwg.ru/showthread.php?p=748505#post748505 ).
Далее все примитивы перебираются по списку и перерисовываю под 45 градусов. А теперь вопросы)

1. Есть блок отвода. Когда он вставлен так как и создан, то с ним все ок, если блок повернут, то после отрисовки вылазиют две дуги...как это происходит не понял.

2. Что очень надоедает - это надпись "Unknown command ... Press F1 бла бла бла )". Понятно, что было такое сто раз, но что с этим делать хз, вроде как решается в частном порядке, помогите исправить.

3. И самое главное. Что я пока не представляю как сделать. Есть блок опуска или подъема. Так вот в нем есть атрибут VO - высотная отметка. Когда у нас такой блок - соответственно нужно блок удалить (это понятно как), а на его месте рисовать линию строго вертикально вверх или вниз на расстояние, которое указано в VO. Все последующие линии уже строить в аксонометрии с учетом этого подъема или опуска. Прошу помочь с этим!

Вот код:

Код:
[Выделить все]
;-------------------------------------------------------------------------------------------------------------
;------------------------  ПРОГРАММА ПЕРЕВОДА ПЛАНА В АКСОНОМЕТРИЧЕСКУЮ ПРОЕКЦИЮ  ----------------------------
;-------------------------------------------------------------------------------------------------------------


(defun C:aksv ( / *error*)
 (setq p_cmdecho (getvar "CMDECHO")
       p_snapmode (getvar "SNAPMODE")
       p_orthomode (getvar "ORTHOMODE")
       p_blipmode (getvar "BLIPMODE")
       p_osmode (getvar "OSMODE")
       visotm nil
       visotmold nil
 )
  (vl-load-com)
  (setq z1 (list 0.0 0.0)
    z2 (list 10.0 0.0))
        
  (setq ug1 (angle z1 z2))                    ;0
  (setq ug2 (+ ug1 1.57079632679489655800))   ;90
  (setq ug3 (+ ug2 1.57079632679489655800))   ;180
  (setq ug4 (+ ug3 1.57079632679489655800))   ;270

      (defun *error* (msg)  ; Переопределение функции ERROR
        (princ "Программа прервана пользователем")
        (setvar "SNAPMODE" p_snapmode)
        (setvar "ORTHOMODE" p_orthomode)
        (setvar "BLIPMODE" p_blipmode)
        (setvar "OSMODE" p_osmode)
        (setvar "CMDECHO" p_cmdecho)    
        (setq p_cmdecho nil p_snapmode nil p_orthomode nil p_osmode nil p_blipmode nil)
        (princ)
      ) ; defun(*error*)
  
 (setvar "CMDECHO" 0)
 (setvar "SNAPMODE" 0)
 (setvar "ORTHOMODE" 0)
 (setvar "BLIPMODE" 0)
 (setvar "OSMODE" 1)
 (gc)
  
(setq stangle nil stangle1 nil endangle nil endangle1 nil bit10 nil bit10new nil
      bit11 nil bit11new nil bit50 nil bit50new nil bit51 nil bit51new nil object_new nil)
(setq n 0 nabr nil number 0 name nil processed_obj 0)
(setq nabr (ssget "_A"))
(setq number (sslength nabr))

  ;------------------------------------------------> можно вводить любой угол
  ;(setq ugol (getreal "Введите угол: "))
  ;(if (null ugol) (setq ugol 45.0))
  ;(initget 6)
  ;------------------------------------------------>
  
(setq ugol 45.0)
(setq ugolrad (* pi (/ ugol 180.0)))

  ;------------------------------------------------> можно вводить любую точку поворота
  ;(setq point (getpoint "\n Укажите точку поворота : ")
  ;------------------------------------------------>
  
(setq point (list 0.0 0.0 0.0)
      x0 (car point)
      y0 (cadr point)
)
  
(princ "\n")
(setvar "OSMODE" 0)
(while (> number n)
  (setq visotmold visotm)
  (setq name (ssname nabr n))
  (setq object (entget name))
  (setq klass (cdr (assoc 0 object)))
  (setq layer (cdr (assoc 8 object)))

  ;на функцию изменения блока в одну линию
  (_kpblc-block-dyn-change-values name '(("Тип" . "В одну линию")))  
 
; разделение по типам объектов
  (cond
     ;;;----- Обработка примитивов типа "INSERT"
     ((eq klass "INSERT")

      (setq namebl (vla-get-effectivename (vlax-ename->vla-object name)))
      (if (equal namebl "VrKr")
    (command "erase" name "")
      )
      (if (equal namebl "VrPr")
    (command "erase" name "")
      )
      (if (equal namebl "OpKR")
    (progn
      (alert "Privet")
      (setq bit10 (assoc 10 object))
      (setq eb1 (entlast))
          (setq ebd (entget eb1))
          (setq name1 (entnext name))
            (while (AND name1
          (= (cdr (assoc 0 (setq object (entget name1)))) "ATTRIB")
              ) 
          (setq imattr (cdr (assoc 2 object))
                    znattr (cdr (assoc 1 object))
              )
          (if (= imattr "VO") 
                (setq visotm (atof znattr))
          )
          (setq name1 (entnext name1))
        );while

      (command "erase" name "")
       
    (setq x1n (cadr bit10)
          y1n (caddr bit10)
          z1 (cadddr bit10)
          bit10pr (list x1n y1n z1)

          bit11 (polar bit10pr ug2 visotm)
          
          x2n (car bit11)
          y2n (cadr bit11)
          z2 (caddr bit11)
     );setq

     (command "line" bit10pr bit11 "")
       (setq

          bit10new (list 10 x1n y1n z1)
          bit11new (list 11 x2n y2n z2)
      
          object_new (subst bit10new bit10 object)
          object_new (subst bit11new bit11 object_new)
          
          processed_obj (1+ processed_obj)
           );setq
        (entmod object_new)
        (entupd name)
      
    );progn
      );if

      (expl)

   ) ; equal klass "INSERT"

  ) ; cond

  (setq n (+ n 1)) ;следующий объект

  ) ;while(main)



  

(setq stangle nil stangle1 nil endangle nil endangle1 nil bit10 nil bit10new nil
      bit11 nil bit11new nil bit50 nil bit50new nil bit51 nil bit51new nil object_new nil)
(setq n 0 nabr nil number 0 name nil processed_obj 0)

;(princ "\n ПРОГРАММА ПЕРЕВОДА ПЛАНА В АКСОНОМЕТРИЧЕСКУЮ ПРОЕКЦИЮ.")
;(princ "\n Выберите объекты: ")
(setq nabr (ssget "_A"))
(setq number (sslength nabr))
(initget 6)
  (setq ugol 45.0)
(setq ugolrad (* pi (/ ugol 180.0)))
;(setq point (getpoint "\n Укажите точку поворота : ")
(setq point (list 0.0 0.0 0.0)
      x0 (car point)
      y0 (cadr point)
)
(princ "\n")
(setvar "OSMODE" 0)
(while (> number n)
  (setq visotmold visotm)
  (setq name (ssname nabr n))
  (setq object (entget name))
  (setq klass (cdr (assoc 0 object)))
  ;(if (= (cdr (assoc 70 (tblsearch "LAYER" (cdr (assoc 8 object))))) 4)  
  ;  (vl-cmdf "_.-layer" "_U" (cdr (assoc 8 object)) "")
  ;)  
; разделение по типам объектов
  (cond
     ((member klass '("ATTDEF"))
       (command "erase" name "")
     ) ; member klass "*TEXT" "POINT"

  ) ; cond
  (setq n (+ n 1))

  ) ;while(main)
;(exit)

(setq stangle nil stangle1 nil endangle nil endangle1 nil bit10 nil bit10new nil
      bit11 nil bit11new nil bit50 nil bit50new nil bit51 nil bit51new nil object_new nil)
(setq n 0 nabr nil number 0 name nil processed_obj 0)

;(princ "\n ПРОГРАММА ПЕРЕВОДА ПЛАНА В АКСОНОМЕТРИЧЕСКУЮ ПРОЕКЦИЮ.")
(setq nabr (ssget "_A"))
(setq number (sslength nabr))
(initget 6)
  (setq ugol 45.0)
  ;(if (null ugol) (setq ugol 45.0))
(setq ugolrad (* pi (/ ugol 180.0)))
;(setq point (getpoint "\n Укажите точку поворота : ")
(setq point (list 0.0 0.0 0.0)
      x0 (car point)
      y0 (cadr point)
)
(princ "\n")
(setvar "OSMODE" 0)
(while (> number n)
  (setq visotmold visotm)
  (setq name (ssname nabr n))
  (setq object (entget name))
  (setq klass (cdr (assoc 0 object)))
  (if (= (cdr (assoc 70 (tblsearch "LAYER" (cdr (assoc 8 object))))) 4)  
    (vl-cmdf "_.-layer" "_U" (cdr (assoc 8 object)) "")
  )  
; разделение по типам объектов
  (cond
     ;;;----- Обработка примитивов типа "LINE", пересчет координат вершин
     ((eq klass "LINE")
    (setq bit10 (assoc 10 object)
          bit11 (assoc 11 object)
          x1 (cadr bit10)
          y1 (caddr bit10)
          z1 (cadddr bit10)
          x2 (cadr bit11)
          y2 (caddr bit11)
          z2 (cadddr bit11)

          x1n (+ (* (- y1 y0) (cos ugolrad)) x1)
          y1n (+ (* (- y1 y0) (sin ugolrad)) y0)
          x2n (+ (* (- y2 y0) (cos ugolrad)) x2)
          y2n (+ (* (- y2 y0) (sin ugolrad)) y0)

          bit10new (list 10 x1n y1n z1)
          bit11new (list 11 x2n y2n z2)
      
          object_new (subst bit10new bit10 object)
          object_new (subst bit11new bit11 object_new)
          
          processed_obj (1+ processed_obj)
        )
        (entmod object_new)
        (entupd name)
     ) ; equal klass "LINE"

     ;;;----- Обработка примитивов типа "LWPOLYLINE", пересчет координат вершин
     ((eq klass "LWPOLYLINE")
        (foreach item object  ; выбор из описания полилинии координат вершин
          (if (= (car item) 10)
            (setq coords (cons item coords))
          )
        )
        (setq vertex (length coords) num_ver 0 object_new object)
        (while (> vertex num_ver)
          (setq bit10 (nth num_ver coords)
                x1 (cadr bit10)
                y1 (caddr bit10)

                x1n (+ (* (- y1 y0) (cos ugolrad)) x1)
                y1n (+ (* (- y1 y0) (sin ugolrad)) y0)

                bit10new (list 10 x1n y1n)
      
          object_new (subst bit10new bit10 object_new)
          )
          (setq num_ver (1+ num_ver))
       ) ; while(vertex>num_ver)
       (entmod object_new)
       (entupd name)
       (setq processed_obj (1+ processed_obj) coords nil vertex nil)
     ) ; equal klass "LWPOLYLINE"

     ;;;----- Обработка примитивов типа "CIRCLE", пересчет координат центра
     ;;; для преобразования окружности в эллипс используется коэффициенты (эмпирические):
     ;;; Rmin/Rmax=-0,0000000000943901414007017*ugol^4+0,000000567997308646077*ugol^3-0,0000362793934898559*ugol^2+0,00997592958744082*ugol-0,0128148277900414
     ;;; Rmax/Rокр=0,000000000310680082815694*ugol^4+0,00000000353048189760587*ugol^3-0,0000539963966370921*ugol^2+0,00000236411058931183*ugol+1,41420291881995
     ((eq klass "CIRCLE")
        (setq bit8 (assoc 8 object) ; слой объекта
              bit10 (assoc 10 object) ; координаты центра окружности
              bit40 (assoc 40 object) ; радиус окружности
              bit67 (assoc 67 object) ; пространство модель/лист
              bit410 (assoc 410 object) ; имя пространства
              x1 (cadr bit10)
              y1 (caddr bit10)
              z1 (cadddr bit10)
              radius (cdr bit40)
              x1n (+ (* (- y1 y0) (cos ugolrad)) x1)
              y1n (+ (* (- y1 y0) (sin ugolrad)) y0)
    )
        (if (= ugol 45.0)
          (setq radiuscoeff (/ 54.11961001 130.65629649)
        Rmaxcoeff (/ 130.65629649 100.0)
          )
      (setq radiuscoeff (- (+ (* 0.000000567997308646077 (expt ugol 3.0)) (* 0.00997592958744082 ugol)) (* 0.0000000000943901414007017 (expt ugol 4.0)) (* 0.0000362793934898559 (expt ugol 2.0)) 0.0128148277900414)
            Rmaxcoeff (- (+ (* 0.000000000310680082815694 (expt ugol 4.0)) (* 0.00000000353048189760587 (expt ugol 3.0)) (* 0.00000236411058931183 ugol) 1.41420291881995) (* 0.0000539963966370921 (expt ugol 2.0)))
      )
    )
        (setq Xbit11 (* Rmaxcoeff radius (cos (* pi (/ ugol 360.0))))
              Ybit11 (* Rmaxcoeff radius (sin (* pi (/ ugol 360.0))))
              bit10new (list 10 x1n y1n z1)
              bit11new (list 11 Xbit11 Ybit11 z1)
          bit40new (cons 40 radiuscoeff)
              bit42new (cons 42 (* pi 2.0))
          
          processed_obj (1+ processed_obj)
        )
        (entmakex (list '(0 . "ELLIPSE") '(100 . "AcDbEntity") bit67 bit410 bit8
                        '(100 . "AcDbEllipse") bit10new bit11new '(210 0.0 0.0 1.0)
                        bit40new '(41 . 0.0) bit42new))
        (entdel name)
     ) ; equal klass "CIRCLE"

     ;;;----- Обработка примитивов типа "ARC", пересчет координат центра и вершин
     ((eq klass "ARC")
    (setq bit8 (assoc 8 object) ; слой объекта
          bit10 (assoc 10 object) ; координаты центра дуги
          bit40 (assoc 40 object) ; радиус дуги
          bit50 (assoc 50 object) ; начальный угол (радианы)
          bit51 (assoc 51 object) ; конечный угол (радианы)
              bit67 (assoc 67 object) ; пространство модель/лист
              bit410 (assoc 410 object) ; имя пространства
          x1 (cadr bit10)
          y1 (caddr bit10)
          z1 (cadddr bit10)
          radius (cdr bit40)
          stangle (cdr bit50)
          endangle (cdr bit51)
          x1n (+ (* (- y1 y0) (cos ugolrad)) x1)
          y1n (+ (* (- y1 y0) (sin ugolrad)) y0)
          chetv (* pi (/ 90.0 180.0))
          eighth (* pi (/ ugol 360.0))
    )
    (if (and (>= stangle 0.0) (< stangle (* pi 0.5)))
        (setq stangle1 (- (- stangle (* pi (/ ugol 360.0))) (* (- chetv ugolrad) (/ (- stangle (* pi (/ ugol 360.0))) chetv))))) ; if для I четверти
    (if (and (>= endangle 0.0) (<= endangle (* pi 0.5)))
        (setq endangle1 (- (- endangle (* pi (/ ugol 360.0))) (* (- chetv ugolrad) (/ (- endangle (* pi (/ ugol 360.0))) chetv))))) ; if для I четверти

        (if (and (>= stangle (* pi 0.5)) (< stangle pi))
        (setq stangle1 (- stangle (* (- chetv ugolrad) (- 2.0 (/ stangle chetv)))))) ; if для II четверти
    (if (and (>= endangle (* pi 0.5)) (< endangle pi))
        (setq endangle1 (- endangle (* (- chetv ugolrad) (- 2.0 (/ endangle chetv)))))) ; if для II четверти

        (if (and (>= stangle pi) (< stangle (* pi 1.5)))
        (setq stangle1 (- stangle (* (- chetv ugolrad) (- (/ stangle chetv) 2.0))))) ; if для III четверти
    (if (and (>= endangle pi) (< endangle (* pi 1.5)))
        (setq endangle1 (- endangle (* (- chetv ugolrad) (- (/ endangle chetv) 2.0))))) ; if для III четверти

        (if (and (>= stangle (* pi 1.5)) (< stangle (* pi 2.0)))
        (setq stangle1 (- stangle (* (- chetv ugolrad) (- 4.0 (/ stangle chetv)))))) ; if для IV четверти
    (if (and (>= endangle (* pi 1.5)) (< endangle (* pi 2.0)))
        (setq endangle1 (- endangle (* (- chetv ugolrad) (- 4.0 (/ endangle chetv)))))) ; if для IV четверти


        (if (= ugol 45.0)
          (setq radiuscoeff (/ 54.11961001 130.65629649)
        Rmaxcoeff (/ 130.65629649 100.0)
          )
      (setq radiuscoeff (- (+ (* 0.000000567997308646077 (expt ugol 3.0)) (* 0.00997592958744082 ugol)) (* 0.0000000000943901414007017 (expt ugol 4.0)) (* 0.0000362793934898559 (expt ugol 2.0)) 0.0128148277900414)
            Rmaxcoeff (- (+ (* 0.000000000310680082815694 (expt ugol 4.0)) (* 0.00000000353048189760587 (expt ugol 3.0)) (* 0.00000236411058931183 ugol) 1.41420291881995) (* 0.0000539963966370921 (expt ugol 2.0)))
      )
    )
        (setq Xbit11 (* Rmaxcoeff radius (cos (* pi (/ ugol 360.0))))
              Ybit11 (* Rmaxcoeff radius (sin (* pi (/ ugol 360.0))))
              bit10new (list 10 x1n y1n z1)
              bit11new (list 11 Xbit11 Ybit11 z1)
          bit40new (cons 40 radiuscoeff)
          bit41new (cons 41 stangle1)
              bit42new (cons 42 endangle1)
          
          processed_obj (1+ processed_obj)
        )
        (entmakex (list '(0 . "ELLIPSE") '(100 . "AcDbEntity") bit67 bit410 bit8
                        '(100 . "AcDbEllipse") bit10new bit11new '(210 0.0 0.0 1.0)
                        bit40new bit41new bit42new))
        (entdel name)
        
     ) ; equal klass "ARC"
     
     ;;;----- Обработка примитивов типа "*TEXT" и "POINT", пересчет координат точки вставки
     ((member klass '("TEXT" "MTEXT" "POINT"))
    (setq bit10 (assoc 10 object)
          x1 (cadr bit10)
          y1 (caddr bit10)
          z1 (cadddr bit10)

          x1n (+ (* (- y1 y0) (cos ugolrad)) x1)
          y1n (+ (* (- y1 y0) (sin ugolrad)) y0)

          bit10new (list 10 x1n y1n z1)
          object_new (subst bit10new bit10 object)
          
          processed_obj (1+ processed_obj)
        )
        (entmod object_new)
        (entupd name)
     ) ; member klass "*TEXT" "POINT"

  ) ; cond
  (setq n (+ n 1))

  ) ;while(main)

  (if (/= n processed_obj)
    (princ (strcat "\n Не удалось обработать объектов: " (rtos (- n processed_obj) 2 0) ".\n"))
  )
  (setvar "SNAPMODE" p_snapmode)
  (setvar "ORTHOMODE" p_orthomode)
  (setvar "BLIPMODE" p_blipmode)
  (setvar "OSMODE" p_osmode)
  (setvar "CMDECHO" p_cmdecho)
    ; (setvar "ERRNO" 0)
  
) ; defun


;-------------------------------------------------------------------------------------------------------------
;------------------------Функция получения текущего "Visibility Set" в блоке----------------------------------
;-------------------------------------------------------------------------------------------------------------


(defun test (/ blkref prop-name)
  (setq blkref (vlax-ename->vla-object (car (entsel "\nУкажите дин.блок"))))
  (setq prop-name "Тип")
  (setq nname
  (vlax-variant-value
    (vla-get-value
      ((lambda (/ res)
         (foreach item (vlax-safearray->list (vlax-variant-value (vla-getdynamicblockproperties blkref)))
           (if (= (strcase (vla-get-propertyname item)) (strcase prop-name))
             (setq res item)
             ) ;_ end of if
           ) ;_ end of foreach
         res
         ) ;_ end of LAMBDA
       )
      ) ;_ end of vla-get-value
    ) ;_ end of vlax-variant-value
   )    
 ) ;_ end of defun



;-------------------------------------------------------------------------------------------------------------
;------------------------Функция изменения "Visibility Set" в блоке-------------------------------------------
;-------------------------------------------------------------------------------------------------------------

(defun _kpblc-block-dyn-change-values (ent              lst
                                       /                prop_lst
                                       _kpblc-conv-vla-to-list
                                       )

  (defun _kpblc-conv-vla-to-list (value / res)
                                 ;|
*    Преобразовывает vlax-variant или vlax-safearray в список.
|;
    (cond
      ((= (type value) 'variant)
       (_kpblc-conv-vla-to-list (vlax-variant-value value))
       )
      ((= (type value) 'safearray)
       (if (>= (vlax-safearray-get-u-bound value 1) 0)
         (vlax-safearray->list value)
         ) ;_ end of if
       )
      (t value)
      ) ;_ end of cond
    ) ;_ end of defun

  (vl-load-com)

  (vl-catch-all-apply
    '(lambda ()
       (setq
         ent (cond
               (ent)
               (t (car (entsel "\nУкажите вхождение дин.блока <Отмена> : ")))
               ) ;_ end of cond
         ) ;_ end of setq
       ) ;_ end of lambda
    ) ;_ end of vl-catch-all-apply
  (if (and ent
           (setq ent (cond
                       ((= (type ent) 'ename) (vlax-ename->vla-object ent))
                       ((= (type ent) 'vla-object) ent)
                       (t nil)
                       ) ;_ end of cond
                 ) ;_ end of setq
           (= (strcase (vla-get-objectname ent) t) "acdbblockreference")
           (= (vla-get-isdynamicblock
                (vla-item
                  (vla-get-blocks
                    (vla-get-activedocument (vlax-get-acad-object))
                    ) ;_ end of vla-get-blocks
                  (vla-get-effectivename ent)
                  ) ;_ end of vla-item
                ) ;_ end of vla-get-isdynamicblock
              :vlax-true
              ) ;_ end of =
           ) ;_ end of and
    (progn
      (setq
        prop_lst (vlax-safearray->list
                   (vlax-variant-value (vla-getdynamicblockproperties ent))
                   ) ;_ end of vlax-safearray->list
        ) ;_ end of setq
      (foreach item (mapcar '(lambda (a) (cons (strcase (car a)) (cdr a))) lst)
        (if (setq prop
                   (car
                     (vl-remove-if-not
                       '(lambda (x)
                          (wcmatch (strcase (vla-get-propertyname x)) (car item))
                          ) ;_ end of lambda
                       prop_lst
                       ) ;_ end of vl-remove-if-not
                     ) ;_ end of car
                  ) ;_ end of setq
          ;; Имя совпало
          (vl-catch-all-apply
            '(lambda ()
               (vla-put-value
                 prop
                 (vlax-make-variant
                   (cdr item)
                   (vlax-variant-type (vla-get-value prop))
                   ) ;_ end of vlax-make-variant
                 ) ;_ end of vla-put-value
               (vla-update ent)
               ) ;_ end of lambda
            ) ;_ end of vl-catch-all-apply
          ) ;_ end of if
        ) ;_ end of foreach
      ) ;_ end of progn
    ) ;_ end of if
  )


(defun expl ()
  (command "_explode" name "")
  (setq l1 (ssget "p"))
  (COMMAND "CHANGE" l1 "" "p" "la" layer "")
)
Файлик с блоками прилагаю.

Вложения
Тип файла: dwg
DWG 2004
D1.dwg (83.0 Кб, 3341 просмотров)

Просмотров: 9976
 
Непрочитано 16.05.2011, 11:36
#2
KSI


 
Регистрация: 19.03.2004
Калининград
Сообщений: 1,842


Цитата:
Сообщение от Zaghim Посмотреть сообщение
2. Чоо очень надоедает - это надпись "Unknown command ... Press F1 бла бла бла )". Понятно, что было такое сто раз, но что с этим делать хз, вроде как решается в частном порядке, помогите исправить.
Все команды надо подправить, поставить подчеркивание перед именем команды:
command "erase"
на
command "_erase"
KSI вне форума  
 
Автор темы   Непрочитано 16.05.2011, 11:59
#3
Zaghim


 
Регистрация: 01.07.2010
Сообщений: 521


Исправил. К сожалению это не помогло... ругается на Unknown command - P, LA и два раза на AKSV...

А точнее вот:
Код:
[Выделить все]
None found.Unknown command "AKSV".  Press F1 for help.
Unknown command "P".  Press F1 for help.
Unknown command "LA".  Press F1 for help.
Unknown command "V".  Press F1 for help.
Unknown command "AKSV".  Press F1 for help.
Unknown command "AKSV".  Press F1 for help.
Unknown command "AKSV".  Press F1 for help.
Unknown command "AKSV".  Press F1 for help.
А вот при изменении command на vl-cmdf пропало сообщение о P, LA, V и прочего, осталось только AKSV.
Вид стал такой:
Код:
[Выделить все]
None found.Application ERROR: Invalid type sent as command input
Unknown command "AKSV".  Press F1 for help.
Unknown command "AKSV".  Press F1 for help.
Unknown command "AKSV".  Press F1 for help.
Unknown command "AKSV".  Press F1 for help.
Ну и работать стала по-быстрее.

Последний раз редактировалось Zaghim, 16.05.2011 в 12:15.
Zaghim вне форума  
 
Непрочитано 16.05.2011, 12:54
#4
KSI


 
Регистрация: 19.03.2004
Калининград
Сообщений: 1,842


"P" и "LA":
(COMMAND "_CHANGE" l1 "" "_p" "_la" layer "")
Где живет "V", непонятно. Может в функциях kpblc.
А вот почему неизвестная команда "AKSV", это вообще загадка. Ведь она определяется в этом лиспе. Может скобка где незакрытая?
KSI вне форума  
 
Автор темы   Непрочитано 16.05.2011, 13:04
#5
Zaghim


 
Регистрация: 01.07.2010
Сообщений: 521


Так бы она не отрабатывала...а тут все ок... У меня было уже такое, не знаю с чем это бывает связано(

В общем если убрать этот кусок:
Код:
[Выделить все]
;(defun expl ()
;  (vl-cmdf "_explode" name "")
;  (setq l1 (ssget "p"))
;  (vl-cmdf "_CHANGE" l1 "" "p" "la" layer "")
;)
и обращение к нему, то все окейно, ни одной неизвестной команды))) что за хрень

Но в общем это все треть беды...даже четверть)) Самое главное решить вопрос с опусками...тут вообще болото(((

Первый пункт решил вроде как, второй ну ничего, переживем, а вот с третим не знаю. ПОМОГИТЕ кто-нибудь... Линию нарисовал вверх или вниз, а дальше она как обычно перерисовывается с остальными примитивами, а нужно, что бы осталась и мало того, нужно объекты перенести вверх или вниз...вот тут полная лажа. Подкиньте хотя бы идею.

Последний раз редактировалось Zaghim, 17.05.2011 в 12:29.
Zaghim вне форума  
 
Непрочитано 03.06.2011, 19:29
#6
Денис Флюстиков


 
Регистрация: 20.07.2005
СПб
Сообщений: 89


Как вариант:
http://dwg.ru/dnl/538
Если первом диалоге правый клик, то только наклон
Денис Флюстиков вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Программа для построения аксонометрии. Несколько вопросов.

Размещение рекламы
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Программа для построения выкроек одежды natamoda Прочее. Программное обеспечение 85 02.08.2011 09:41
Программа для построения лестниц? Yelik Прочее. Программное обеспечение 12 14.02.2009 01:47
Программа для построения профилей подземных газопроводов Tornado Инженерные сети 2 13.10.2008 14:59
Фундамент с динамическими нагрузками в Scad Tlelaxu SCAD 9 31.08.2007 10:44
Программа для построения крюка d2alex Программирование 5 22.06.2007 10:40