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

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

Как отредактировать программу

Ответ
Поиск в этой теме
Непрочитано 14.12.2009, 08:00 #1
Как отредактировать программу
Jonas
 
конструктор машиностроитель
 
Новосибирск
Регистрация: 14.05.2007
Сообщений: 893

С 2000го пользуемся программами Г. Поспелова для машиностроителей - вставка в штамп материала, встака обозначения крепежа, вставка техтребований и др.
Программы замечательные но, с появлением аннотативности (2008) естественно не работают (именно в аннотативном режиме).
С техтребованиями я решил просто заменив стиль текста на аннотативнный.
С другими проблемма, стиль текста заменил и работает, но для вставки в штамп длина текса ограничена (как командой из экспресса textfit), тоесть по высоте текст вставляется соответственно аннотативности а по длине постоянной.

Уважаемые профи, подскажите, можно ли что то сделать?

Выкладываю одну программу:

Код:
[Выделить все]
;;;-----------> MTRL.LSP <------------------------------------------
;;;        vrersion 2.0 -03/2001
;;;программа внесения в графу МАТЕРИАЛ штампка сортамента материала
;;;
;;;Copyright © \"SingleSoft PG\" "
;;;mailto:gepos@mail.ru
;;; 
;;; v2.0     март 2001 добавлены сортаменты квадратных труб
;;;
;;;-------------> HELP <---------------------------------------------
(defun ab_prog (ab_progr /)

  (if (not (new_dialog "ab_text" DCL_ID))
    (exit)
  )
  (start_list "ab_progr")
  (mapcar 'add_list ab_progr)
  (end_list)

  (action_tile "accept" "(done_dialog)")
  (start_dialog)
)
;;;--------------------------------------------------------------------
;;;------------------> PST <-------------------------------------------
(defun pst (pt0 tip dl / p1 p2)

  (setq ptf (list (+ (car pt0) dl) (cadr pt0)))

  (command "_TEXT" "_f" pt0 ptf "4.0" tip)

  (if (<= dl 30.0)
    (progn
      (setq p1 (list (+ (car ptf) 2.0) (+ (cadr pnt1) 2.5))
	    p2 (list (+ (car p1) 44.0) (cadr p1))
      )
      (command "_LINE" p1 p2 "")
    )					;progn
  )
)
;;;--------------------------------------------------------------------
;;;------------------> IZMEN <--------------------------------------
(defun izmen (a / op_file )
 (setq fil_sp (list "m-00.dat"  ;; круг горячекатаный
		    "m-10.dat"  ;; круг холоднокатанный
		    "m-20.dat"  ;; листы горячекатанные из сталей по ГОСТ 1577-93
                    "m-30.dat"  ;; листы горячекатанные из сталей по ГОСТ 16523-89 до 3.9
		    "m-30.dat"  ;; листы холоднокатанные
		    "m-40.dat"  ;; трубы горячекатанные
		    "m-50.dat"  ;; трубы холоднокатанные
		    "m-50.dat"  ;; трубы х/д и т/д корроз. стойкие ГОСТ 9941-81
                    "m-8639.dat";; трубы стальные квадратные ГОСТ 8639-68
                    "dvtr.dat"  ;; двутавр
		    "svlr.dat"  ;; швеллер с уклоном
		    "svlrp.dat" ;; швеллер с паралл
		    "svlrg.dat" ;; швеллер гнутый
		    "ugrp.dat"  ;; уголок равнополочный
		    "ugnp.dat"  ;; уголок неравнополочный
		    "ugrg.dat"  ;; уголок гнутый равнополочный
		    "ugng.dat"  ;; уголок гнутый неравнополочный
	       ) 
        fil  (findfile(nth a fil_sp))
 )
 (setq op_file (open fil "r"))
 (setq     str (read-line op_file)
     spisok_sz (read str)
   )
 (start_list "tip_size" 3)
 (mapcar 'add_list spisok_sz) 
 (end_list)
 
 (close op_file)
 (if (= a 7)
       (progn 
    (start_list "mat_d" 3)
    (mapcar 'add_list mat_spk) 
    (end_list)
  )
 )
 (if (= a 8)
       (progn 
    (start_list "mat_d" 3)
    (mapcar 'add_list mat_sp10) 
    (end_list)
  )
 )
 

)
;;;--------------------------------------------------------------------
;;;------------------> MATERIAL <--------------------------------------
(defun c:mtrl (/ $value	    ce	   bm	    osm
	       t_size
	       tip
	       tip_size
               sortam
	       sortam_d
	       krug_g     krug_k
	       pipe_g     pipe_k
	       list_g     list_k
	       mat_d
	       mat_sp      	    ;; список материала для окна
	       mat_sp2	            ;; список материала для вставки
               mat
	       marka                  ;; выбранный иатериал
	       spisok               ;; spisok from sortam2
	       ;spisok_sz
	       dl1        dl2       ;; длины записи   
	       str1 str2 str3       ;; строки записи
	      )

   (setq info_pr
	 (list
	   "         Программа записи строки сортамента "
           "                     материала графу штампа чертежа - "
           " _____________________________________________________ "
	   " укажите левый нижний угол графы "
           " "
	   " Программа предназначена для свободного распространения "
	   " в конструкторской среде.  "
	   " Автор снимает с себя ответственность за использование "
	   " программы. "
	   "  "
	   "  Автор - Геннадий Е. Поспелов "
	   " 2 ноября 1999г."
           " версия 2,0 март 2001г"
	   "          Copyright © \"SingleSoft PG\" "
	   "                             mailto:gepos@mail.ru "
           " http://www.kulichki.com/cadhlp "
           " "
	  )
	
	;;----- список исходных сортаментов --------------------------------
	sortam
	 (list
	   "Круг горячекатанный  ГОСТ  2590-88"
	   "Круг калиброванный   ГОСТ  7417-75"
	   "Лист горячекатанный  ГОСТ 19903-74 сталь по ГОСТ 1577-93"
	   "Лист горячекатанный  ГОСТ 19903-74 сталь по ГОСТ 16523-89"
	   "Лист холоднокатанный ГОСТ 19904-74"
	   "Трубы бесшовные горячедеформированные  ГОСТ 8732-78"
	   "Трубы бесшовные холоднодеформированные ГОСТ 8734-78"
	   "Трубы х/д и т/д из корроз.стойкой стали ГОСТ 9941-81"         ;-7
           "Трубы стальные квадратные  ГОСТ 8639-68"
	   "Двутавр   ГОСТ 8239-72"
	   "Швеллер с уклоном ГОСТ 8240-72"
	   "Швеллер с паралл. полками ГОСТ 8240-72"
	   "Швеллер гнутый ГОСТ 8278-83"
	   "Уголок   равнополочный  ГОСТ 8509-72"
	   "Уголок неравнополочный  ГОСТ 8510-72"
	   "Уголок гнутый   равнополочный  ГОСТ 19771-74"
	   "Уголок гнутый неравнополочный  ГОСТ 19772-74"
	  )
	;;----- список исходных сортаментов 2 -------------------------------
	sortam2
	 (list
	   '("Круг" " "      "-В" " ГОСТ 2590-88"  " "      " "  " ГОСТ 1050-88")
	   '("Круг" " "      "-4" " ГОСТ 7417-75"  " "      "-В" " ГОСТ 1051-73")
	   '("Лист" "ПН-НО-" " "  " ГОСТ 19903-74" " "      " "  " ГОСТ 1577-93")
	   '("Лист" "ПН-НО-" " "  " ГОСТ 19903-74" "К350В " " "  " ГОСТ 16523-86")
	   '("Лист" "ПН-НО-" " "  " ГОСТ 19904-74" "К350В " " "  " ГОСТ 16523-86")
	   '("Труба" " "     " "  " ГОСТ 8732-75"  "Б "    " "  " ГОСТ 8731-87")
	   '("Труба" " "     " "  " ГОСТ 8734-75"  "Б "    " "  " ГОСТ 8733-87")
	   '("Труба" " "    " "  " - "             " "    " "  " ГОСТ 9941-81") ;; корроз.стойкие
	   '("Труба" " "    " "  " - "             " "    " "  "ГОСТ 8639-68") ;; квадратные трубы
	   '("Двутавр" " "   " "  " ГОСТ 8239-89"  " "     " "  " ГОСТ 535-88")
	   '("Швеллер" " "   " "  " ГОСТ 8240-72"  " "     " "  " ГОСТ 535-88")
	   '("Швеллер" " "   " "  " ГОСТ 8240-72"  " "     " "  " ГОСТ 535-88")
	   '("Швеллер" " "   " "  " ГОСТ 8278-83"  " "     " "  " ГОСТ 535-88")
	   '("Уголок"  " "   "-"  " ГОСТ 8509-86"  " "     " "  " ГОСТ 535-88")
	   '("Уголок"  " "   "-"  " ГОСТ 8510-86"  " "     " "  " ГОСТ 535-88")
	   '("Уголок"  " "   "-"  " ГОСТ 19771-74" " "     " "  " ГОСТ 535-88")
	   '("Уголок"  " "   "-"  " ГОСТ 19772-74" " "     " "  " ГОСТ 535-88")
	  )
	;;----- список материалов ----------------------------------------------
	mat_sp
	 (list
           "Ст.3сп"  "Ст.5сп" "Ст.6сп"
	   "10"	     "20"     "35"     "45"     "50"
	   "40X"    
	   )
	 ;;----- список материалов ----------------------------------------------
	mat_sp2
	 (list
	   "Ст.3сп"  "Ст.5сп" "Ст.6сп"
	   "10"	     "20"     "35"     "45"     "50"
	   "40X"        
	   )
         ;;----- список материалов ----------------------------------------------
	mat_sp10
	 (list "10"   "20"
           ) 
         ;;----- список материалов ----------------------------------------------
	mat_spk
	 (list
	     "12Х18Н10Т"  "08Х18H10Т"   "12Х17"  "08Х17Т"  
          )
  ) 
	
 ;; Сохранение значений  и установка системных переменных и исходных данных
  (setq	ce  (getvar "CMDECHO")
	bm  (getvar "BLIPMODE")
	osm (getvar "OSMODE")
  )
  (setq	t_size 0
	   tip 0
     ;spisok_sz (izmen 0)
	   dl1 12.0
	   dl2 40.0
	   mat 0
	
  )
  (izmen 0)
  ;; Установка переменных
  (setvar "CMDECHO" 0)
  (setvar "BLIPMODE" 0)
  (setvar "OSMODE" 0)
  
  ;;
  ;; open window functions 
  (setq DCL_ID (load_dialog "mtrl.dcl"))
  (if (not (new_dialog "mtrl1" dcl_id))
    (exit)
  )


  (start_list "sortam_d" 3) (mapcar 'add_list sortam)    (end_list)
  (start_list "tip_size" 3) (mapcar 'add_list spisok_sz) (end_list)
  (start_list "mat_d" 3)    (mapcar 'add_list mat_sp)    (end_list)


  (action_tile "sortam_d" "(progn
                              (izmen (setq tip (atoi $value)))
                              (setq t_size 0)
                            )"
  )
  (action_tile
    "tip_size"
    "(setq t_size (atoi $value))"
  )
  (action_tile
    "mat_d"
    "(setq mat (atoi $value))"
  )

  (action_tile "info" "(ab_prog info_pr)")
  (action_tile "cancel" "(done_dialog 0)")
  (action_tile "accept" "(done_dialog 1)")


 ;;  Open calculation if OK- selected
 (if(= 1 (start_dialog))   ;; IF open
  (progn
   (setq t_sz (nth t_size spisok_sz))
	
   (setq
      marka (nth mat mat_sp)
     spisok (nth tip sortam2)
       str1 (nth 0 spisok)
       str2 (strcat (nth 1 spisok) t_sz (nth 2 spisok)(nth 3 spisok))
       str3 (strcat (nth 4 spisok) marka (nth 5 spisok)(nth 6 spisok))
       pnt1 (getpoint "\nТочка вставки")
   )
 ;;---------   
  (if (= tip 7)        ;; корроз.стойкие х/д трубы -7
          
      (setq marka (nth mat mat_spk)
             str2 (strcat (nth 0 spisok)" " t_sz "-" marka)
             str3 (strcat "   "(nth 6 spisok))
       )

    )                    ;;  close IF -7

 ;;---------   
   (if (= tip 8)         ;; трубы квадратные -8
                   
      (setq  marka (nth mat mat_sp10)
             str2 (strcat (nth 0 spisok)" " t_sz "-" marka)
             str3 (strcat "   "(nth 6 spisok))
       )

    )                   ;;  close IF -8

    
   (setq pnt2 (list (+ (car pnt1) 17.0) (+ (cadr pnt1) 9.5))
         pnt3 (list (+ (car pnt1) 17.0) (+ (cadr pnt1) 2.0))
	 pnt1 (list (+ (car pnt1)  1.0) (+ (cadr pnt1) 6.0))
   )
   (if
       (or (= tip 7) (= tip 8)
        )
         (progn
              (pst pnt2 str2 dl2)
              (pst pnt3 str3 dl2)
          )           
    )
 
   (if
       (and
         (/= tip 7)
         (/= tip 8)
        )
         (progn 
             (pst pnt1 str1 dl1)
             (pst pnt2 str2 dl2)
             (pst pnt3 str3 dl2)
         )
    ) ;; close IF
  ) ;; close PROGN
 )  ;; close IF START_DIALOG
  ;; восстановление значений системных переменных
  (setvar "BLIPMODE" bm)
  (setvar "CMDECHO" ce)
  (setvar "OSMODE" 951)
  (princ)
)
;;;----------> END <-------------------------------------------------
;(c:mtrl)
Обращался к Г. Поспелову, но он сказал что, отошел от этих дел и преложил обратиться в форум.

Последний раз редактировалось Кулик Алексей aka kpblc, 14.12.2009 в 08:42.
Просмотров: 4651
 
Непрочитано 14.12.2009, 08:27
#2
Do$

AutoCAD/Civil3D LISP/C#
 
Регистрация: 15.08.2008
Санкт-Петербург
Сообщений: 1,701
Отправить сообщение для Do$ с помощью Skype™


Попробовать бы, что она должна делать, да вот незадача: не хватает следующих файлов:
  • mtrl.dcl
  • m-00.dat
  • m-10.dat
  • m-20.dat
  • m-30.dat
  • m-40.dat
  • m-50.dat
  • m-8639.dat
  • dvtr.dat
  • svlr.dat
  • svlrp.dat
  • svlrg.dat
  • ugrp.dat
  • ugnp.dat
  • ugrg.dat
  • ugng.dat
Do$ вне форума  
 
Автор темы   Непрочитано 14.12.2009, 10:33
#3
Jonas

конструктор машиностроитель
 
Регистрация: 14.05.2007
Новосибирск
Сообщений: 893


Вот они
Вложения
Тип файла: rar Новая папка.rar (31.3 Кб, 79 просмотров)
Jonas вне форума  
 
Непрочитано 14.12.2009, 10:51
#4
Do$

AutoCAD/Civil3D LISP/C#
 
Регистрация: 15.08.2008
Санкт-Петербург
Сообщений: 1,701
Отправить сообщение для Do$ с помощью Skype™


Думаю, что проблема в этой функции:
Код:
[Выделить все]
 
(defun pst (pt0 tip dl / p1 p2)
  (setq ptf (list (+ (car pt0) dl) (cadr pt0)))
  (command "_TEXT" "_f" pt0 ptf "4.0" tip)
  (if (<= dl 30.0)
    (progn
      (setq p1 (list (+ (car ptf) 2.0) (+ (cadr pnt1) 2.5))
     p2 (list (+ (car p1) 44.0) (cadr p1))
      ) ;_ end of setq
      (command "_LINE" p1 p2 "")
    )     ;progn
  ) ;_ end of if
) ;_ end of defun
Тут командными методами создается текст и линия.
Скорее всего, с появлением аннотативности, изменились опции команды "_TEXT".
Можно попробовать отредактировать вот эту строчку:
Код:
[Выделить все]
 
(command "_TEXT" "_f" pt0 ptf "4.0" tip)
в соответствии с новыми опциями (вручную набрать "_text" в коммандной строке и посмотреть, что будет запрашиваться).
Правильнее, конечно, создавать текст через entmake (или entmakex).
Do$ вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Как отредактировать программу



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Рифмоплетство. Kryaker Разное 554 14.11.2023 11:59
Требуется помощь, дабы написать на лиспе программу проверяющую топологию WeMaN LISP 23 26.01.2011 01:26
Юмор 2007 Огурец Разное 1172 29.12.2007 11:16
Как добавить атрибуты в динамический блок? Archeo Динамические блоки 20 17.11.2006 11:30
Как из Delphi запустить программу на AutoLISP Valery LISP 1 23.09.2005 20:51