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

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

_block

Ответ
Поиск в этой теме
Непрочитано 08.08.2007, 19:29 #1
_block
Holon
 
CNC
 
Israel
Регистрация: 07.07.2007
Сообщений: 302

Поправте меня если синтаксис создания блока неправельный, bk2 имя нового блока,
точка вставки door_ar14, Name_11-Name_15 имена примитивов полученнуе функцией
(entlast)
Код:
[Выделить все]
(COMMAND "_block"   bk2	     door_ar14	Name_11	   Name_12
	       Name_13	  Name_14    Name_20	Name_21	   Name_22
	       Name_23	  Name_15    ""
	      )
Просмотров: 3001
 
Непрочитано 08.08.2007, 19:33
#2
Кулик Алексей aka kpblc
Moderator

LISP, C# (ACAD 200[9,12,13,14])
 
Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,451


Так а вопрос-то в чем?
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 08.08.2007, 20:13
#3
Krieger

инженер (КМ)
 
Регистрация: 30.10.2004
Красноярск
Сообщений: 3,837


У команды поставь дефис "_-block", а имя блока возьми в кавычки. Если имена примитивов сохраняются через entlast где-то в теле программы, то не проще использовать функцию "ssadd"?
Krieger вне форума  
 
Автор темы   Непрочитано 09.08.2007, 08:17
#4
Holon

CNC
 
Регистрация: 07.07.2007
Israel
Сообщений: 302


а можно поподробнее о функции ssadd
Holon вне форума  
 
Автор темы   Непрочитано 09.08.2007, 09:10
#5
Holon

CNC
 
Регистрация: 07.07.2007
Israel
Сообщений: 302


Проблема заключается в том, что я в программе использовал комманду copy, она
нормально копировала список примитивов из одной точки в другую, первый раз, все отрисовыбается нормально, после чего в моделе чертежа я удаляю только что успешно созданный чертеж и запускаю программу заново, вот тут начинается проблема, программа неможет скопировать якобы удаленные объекты, проблему можно решить только если перед загрузкой сделать redraw, пытался вставить (redraw) в код программы, попытка неудалась, сейчас заменил команду copy на команду block
результат такой-же при повторном запуске программы в моделе чертежа после команды
erase неотрисовываются копируемые примитивы.
Holon вне форума  
 
Непрочитано 09.08.2007, 09:32
#6
Кулик Алексей aka kpblc
Moderator

LISP, C# (ACAD 200[9,12,13,14])
 
Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,451


В код поподробнее можно? В смысле весь?
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 09.08.2007, 09:52
#7
Holon

CNC
 
Регистрация: 07.07.2007
Israel
Сообщений: 302


Код:
[Выделить все]
(defun 4sm (/		Name_1	    Name_2	Name_3	    Name_4
	    Name_5	Name_6	    Name_7	Name_8	    Name_9
	    Name_10	Name_11	    Name_12	Name_13	    Name_14
	    Name_15	Name_16	    Name_17	Name_18	    HL
	    LL		BP	    bp_b	bp_c	    bp_d
	    basepath	sm1020a	    sm1010a	sm1050	    armonica
	    dclfile_1	dcl_id	    on_ed1	on_ed2	    door_ar1
	    door_ar2	door_ar3    door_ar4	door_ar5    door_ar6
	    door_ar7	door_ar8    door_ar9	door_ar10   door_ar11
	    door_ar12	door_ar13   door_ar14	door_ar15   door_ar16
	    door_ar17	door_ar18   door_ar19	door_ar20   door_ar21
	    door_ar22	hole_upa    hole_downa	hole_1a	    hole_2a
	    hole_3a	hole_4a	    hole_upb	hole_downb  hole_1b
	    hole_2b	hole_3b	    hole_4b	hole_5b	    hole_6b
	    hole_7b	hole_8b	    hole_1d	hole_2d	    hole_jadit
	    list_sys_var	    sys_var
	   )
  (vl-load-com)
  (setq	list_sys_var
	 '("clayer"	"osmode"     "CMDECHO"	  "BLIPMODE"
	   "DIMASZ"	"DIMCLRD"    "DIMCLRE"	  "DIMCLRT"
	   "DIMDLI"	"DIMEXE"     "DIMEXO"	  "DIMGAP"
	   "DIMSOXD"	"DIMTAD"     "DIMTIH"	  "DIMTSZ"
	   "DIMTXT"
	  )
  )
  (setq sys_var (mapcar 'getvar list_sys_var))
  (setvar "BLIPMODE" 0)
  (setvar "osmode" 0)
  (setvar "CMDECHO" 0)
  (setvar "DIMASZ" 40)			;Arrow size 
  (setvar "DIMCLRD" 3)			;(Green)(BYBLOCK)  Dimension line and leader color 
  (setvar "DIMCLRE" 3)			;(Green)(BYBLOCK)  Extension line color 
  (setvar "DIMCLRT" 7)			;(white)  Dimension text color 
  (setvar "DIMDLI" 0)			;Dimension line spacing 
  (setvar "DIMEXE" 20)			;Extension above dimension line 
  (setvar "DIMEXO" 30)			;Extension line origin offset 
  (setvar "DIMGAP" 20)			;Gap from dimension line to text 
  (setvar "DIMSOXD" 0)			;(Off) Suppress outside dimension lines 
  (setvar "DIMTAD" 1)			;Place text above the dimension line 
  (setvar "DIMTIH" 0)			;(Off)Text inside extensions is horizontal 
  (setvar "DIMTSZ" 0)			;Tick size 
  (setvar "DIMTXT" 40)			;Text height 
  (command "LIMITS" "0,0" "297,210" "ZOOM" "A")
  (setq
    basepath  "U:\\LISP\\PL\\"
    sm1020a   (strcat basepath "pl_sm1020a.dwg")
    sm1010a   (strcat basepath "pl_sm1010a.dwg")
    sm1050    (strcat basepath "pl_sm1050.dwg")
    armonica  (strcat basepath "armonica.dwg")
    dclfile_1 "armonica_1.dcl"
  )
  (setq dcl_id (load_dialog (strcat basepath dclfile_1)))
  (new_dialog "dd_edit" dcl_id)
  (setq
    on_ed1 ""
    on_ed2 ""
  )
  (set_tile "HL_DCL" on_ed1)
  (set_tile "LL_DCL" on_ed2)
  (action_tile "HL_DCL" "(setq on_ed1 $value)")
  (action_tile "LL_DCL" "(setq on_ed2 $value)")

  (if (= 1 (start_dialog))
    (progn
      (setq
	HL	 (atoi on_ed1)
	LL	 (atoi on_ed2)
	BP	 (list 0 0)
	door_ar1
		 (polar bp (/ pi 2) 27)
	door_ar2
		 (polar door_ar1 (/ pi 2) (- HL 50))
	door_ar3
		 (polar door_ar2 (/ pi 2) 23)
	door_ar4
		 (polar door_ar3 (* pi 2) 105)
	door_ar5
		 (polar door_ar4 (* pi 2) (- LL 105))
	door_ar6
		 (polar door_ar5 (* pi 1.5) HL)
	door_ar7
		 (polar door_ar6 pi 50)
	door_ar8
		 (polar door_ar7 pi 120)
	door_ar9
		 (polar door_ar6 pi (- LL 127))
      )
      (OR (IF (>= HL 2900)
	    (setq hole_upa (polar door_ar5 (* pi 1.5) 250))
	  )
      )
      (IF (< HL 2900)
	(setq hole_upa (polar door_ar5 (* pi 1.5) 200))
      )
      (setq
	hole_1a	(polar hole_upa pi 31)
	hole_2a	(polar hole_1a (* pi 1.5) 50)
      )
      (OR (IF (>= HL 2900)
	    (setq hole_downa (polar door_ar6 (/ pi 2) 250))
	  )
      )
      (IF (< HL 2900)
	(setq hole_downa (polar door_ar6 (/ pi 2) 200))
      )
      (setq
	hole_3a	(polar hole_downa pi 31)
	hole_4a	(polar hole_3a (/ pi 2) 50)
      )
      (command "_.-layer"	   "_m"	     "Body"    "_lt"
	       "Continuous"	   ""	     "_color"  7
	       ""	 ""
	      )
      (vl-cmdf "_line" door_ar1 door_ar2 "")
      (setq Name_1 (entlast))
      (vl-cmdf "-insert"
	       (strcat sm1020a)
	       door_ar2
	       1
	       1
	       0
      )
      (setq Name_2 (entlast))
      (vl-cmdf "_pline" door_ar4 door_ar5 door_ar6 door_ar7 "")
      (setq Name_3 (entlast))
      (vl-cmdf "-insert"
	       (strcat sm1050)
	       door_ar7
	       1
	       1
	       0
      )
      (setq Name_4 (entlast))
      (vl-cmdf "_line" door_ar8 door_ar9 "")
      (setq Name_5 (entlast))
      (vl-cmdf "-insert"
	       (strcat sm1010a)
	       door_ar9
	       1
	       1
	       0
      )
      (setq Name_6 (entlast))
      (vl-cmdf "_circle" hole_1a "_d" 20)
      (setq Name_7 (entlast))
      (vl-cmdf "_circle" hole_2a "_d" 20)
      (setq Name_8 (entlast))
      (vl-cmdf "_circle" hole_3a "_d" 20)
      (setq Name_9 (entlast))
      (vl-cmdf "_circle" hole_4a "_d" 20)
      (setq Name_10 (entlast))
      (setq
	bp_b	  (list (+ (car door_ar6) (/ LL 5)) 0)
	door_ar10 (polar bp_b (/ pi 2) HL)
	door_ar11 (polar door_ar10 (* pi 2) (- LL 79))
	door_ar12 (polar door_ar11 (* pi 2) 28)
	door_ar13 (polar door_ar12 (* pi 2) 51)
	door_ar14 (polar door_ar13 (* pi 1.5) HL)
	door_ar15 (polar door_ar14 pi 50)
	door_ar16 (polar door_ar15 pi 120)
      )
      (vl-cmdf "_pline" bp_b door_ar10 door_ar11 "")
      (setq Name_11 (entlast))
      (vl-cmdf "-insert"
	       (strcat armonica)
	       door_ar11
	       1
	       1
	       0
      )
      (setq Name_12 (entlast))
      (vl-cmdf "_pline"	door_ar12 door_ar13 door_ar14 door_ar15	"")
      (setq Name_13 (entlast))
      (vl-cmdf "-insert"
	       (strcat sm1050)
	       door_ar15
	       1
	       1
	       0
      )
      (setq Name_14 (entlast))
      (vl-cmdf "_line" door_ar16 bp_b "")
      (setq Name_15 (entlast))

      (OR (IF (>= HL 2900)
	    (setq hole_upb (polar door_ar13 (* pi 1.5) 250))
	  )
      )
      (IF (< HL 2900)
	(setq hole_upb (polar door_ar13 (* pi 1.5) 200))
      )
      (setq
	hole_1b	(polar hole_upb pi 31)
	hole_2b	(polar hole_1b (* pi 1.5) 50)
      )
      (OR (IF (>= HL 2900)
	    (setq hole_downb (polar door_ar14 (/ pi 2) 250))
	  )
      )
      (IF (< HL 2900)
	(setq hole_downb (polar door_ar14 (/ pi 2) 200))
      )
      (setq
	hole_3b	(polar hole_downb pi 31)
	hole_4b	(polar hole_3b (/ pi 2) 50)
	hole_5b	(polar hole_1b pi (- LL 62))
	hole_6b	(polar hole_2b pi (- LL 62))
	hole_7b	(polar hole_3b pi (- LL 62))
	hole_8b	(polar hole_4b pi (- LL 62))
      )
      (vl-cmdf "_circle" hole_1b "_d" 20)
      (setq Name_16 (entlast))
      (vl-cmdf "_circle" hole_2b "_d" 20)
      (setq Name_17 (entlast))
      (vl-cmdf "_circle" hole_3b "_d" 20)
      (setq Name_18 (entlast))
      (vl-cmdf "_circle" hole_4b "_d" 20)
      (setq Name_19 (entlast))
      (vl-cmdf "_circle" hole_5b "_d" 20)
      (setq Name_20 (entlast))
      (vl-cmdf "_circle" hole_6b "_d" 20)
      (setq Name_21 (entlast))
      (vl-cmdf "_circle" hole_7b "_d" 20)
      (setq Name_22 (entlast))
      (vl-cmdf "_circle" hole_8b "_d" 20)
      (setq Name_23 (entlast))
      (setq
	bp_c	  (list (+ (car door_ar14) (/ LL 5)) 0)
	door_ar17 (polar bp_c (/ pi 2) HL)
	door_ar18 (polar door_ar17 (* pi 2) LL)
	door_ar19 (polar door_ar18 (* pi 1.5) HL)
	door_ar20 (polar door_ar19 pi 50)
	door_ar21 (polar door_ar20 pi 120)
      )
      (vl-cmdf "_pline"	bp_c door_ar17 door_ar18 door_ar19 door_ar20 "")
      (vl-cmdf "-insert"
	       (strcat sm1050)
	       door_ar20
	       1
	       1
	       0
      )
      (vl-cmdf "_line" door_ar21 bp_c "")
;;;      (vl-cmdf "_copy"	  Name_16    Name_17	Name_18	   Name_19
;;;	       Name_20	  Name_21    Name_22	Name_23	   ""
;;;	       door_ar14  door_ar19  ""
;;;	      )
      (COMMAND "_-block"  "bk1"	     door_ar14	Name_16	   Name_17
	       Name_18	  Name_19    Name_20	Name_21	   Name_22
	       Name_23	  ""
	      )
      (setq Name_bk1 (entlast))
      (vl-cmdf "-insert" "bk1" door_ar14 1 1 0)
      (vl-cmdf "-insert" "bk1" door_ar19 1 1 0)
      (setq
	bp_d	  (list (+ (car door_ar19) (/ LL 5)) 0)
	door_ar22 (polar bp_d (* pi 2) LL)
      )
;;;      (vl-cmdf "_copy"	  Name_11    Name_12	Name_13	   Name_14
;;;	       Name_20	  Name_21    Name_22	Name_23	   Name_15
;;;	       ""	  door_ar14  door_ar22	""
;;;	      )
      (COMMAND "_-block"  "bk2"	     door_ar14	Name_11	   Name_12
	       Name_13	  Name_14    Name_20	Name_21	   Name_22
	       Name_23	  Name_15    ""
	      )
      (setq Name_bk2 (entlast))
      (vl-cmdf "-insert" "bk2" door_ar14 1 1 0)
      (vl-cmdf "-insert" "bk2" door_ar22 1 1 0)
      (setq
	hole_1d	(polar door_ar22 (/ pi 2) 1000)
	hole_2d	(polar hole_1d pi 70)
      )
      (vl-cmdf "_circle" hole_2d "_d" 12)
      (setq hole_jadit (entlast))
      (setvar "DIMTXSTY" "i")
      (command "_.-layer"	   "_m"	     "Dim"     "_lt"
	       "Continuous"	   ""	     "_color"  3
	       ""	 ""
	      )
      (vl-cmdf "_dimlinear" bp door_ar6 "@ 0,-100")
      (vl-cmdf "_dimlinear" bp_b door_ar14 "@ 0,-100")
      (vl-cmdf "_dimlinear" bp_c door_ar19 "@ 0,-100")
      (vl-cmdf "_dimlinear" bp_d door_ar22 "@ 0,-100")
      (vl-cmdf "_dimlinear" bp door_ar3 "V" "@ -100,0")
      (vl-cmdf "_dimlinear" hole_2d door_ar22 "V" "@ 100,0")
      (vl-cmdf "_dimlinear"
	       door_ar13
	       (list (- (car door_ar13) 65) (cadr door_ar13))
	       "H"
	       "@ 0,100"
      )
      (vl-cmdf "_dimlinear" hole_2d hole_1d "H" "@ 0,100")
      (vl-cmdf
	"_dimlinear"
	(list (car door_ar22) (+ (cadr door_ar22) HL))
	(list (- (car (list (car door_ar22) (+ (cadr door_ar22) HL))) 65)
	      (cadr (list (car door_ar22) (+ (cadr door_ar22) HL)))
	)
	"H"
	"@ 0,100"
      )
    )
  )
  (unload_dialog dcl_id)
  (vl-cmdf "ZOOM" "A" "")
  (mapcar 'setvar list_sys_var sys_var)
  (princ)
)
Holon вне форума  
 
Автор темы   Непрочитано 09.08.2007, 12:09
#8
Holon

CNC
 
Регистрация: 07.07.2007
Israel
Сообщений: 302


Цитата:
Сообщение от Holon
Проблема заключается в том, что я в программе использовал комманду copy, она
нормально копировала список примитивов из одной точки в другую, первый раз, все отрисовыбается нормально, после чего в моделе чертежа я удаляю только что успешно созданный чертеж и запускаю программу заново, вот тут начинается проблема, программа неможет скопировать якобы удаленные объекты, проблему можно решить только если перед загрузкой сделать redraw, пытался вставить (redraw) в код программы, попытка неудалась, сейчас заменил команду copy на команду block
результат такой-же при повторном запуске программы в моделе чертежа после команды
erase неотрисовываются копируемые примитивы.
Holon вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > _block

Опции темы Поиск в этой теме
Поиск в этой теме:

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