Архитектору и проектировщику|Тепло- и звукоизоляция URSA.RU
Показать сообщение отдельно
Непрочитано 12.09.2013, 15:43 #1
Размер в формате "NхШаг"
sam_n
 
Регистрация: 04.06.2013
Сообщений: 34

В очередной раз хочу поднять тему о добавлении к размерам шага в формате "NхШаг=". После долгого прочесывания самым толковым показался такой лисп

Код:
[Выделить все]
 (defun C:shag (/ *error* adoc name_ent list_ent dim_value n1)
  (vl-load-com)
  (defun *error* (msg)
    (vla-endundomark adoc)
    (princ "Работа программы прервана пользователем")
  )
  (vla-startundomark
    (setq adoc (vla-get-activedocument (vlax-get-acad-object)))
  )
  (initget 6)
  (if (not _var_n)
    (setq _var_n0 100)
  )
  (setq	_var_n
	 (getint (strcat "\nВведите положительное целое число <"
			 (rtos _var_n0)
			 ">: "
		 )
	 )
  )
  (if (not _var_n)
    (setq _var_n _var_n0)
    (setq _var_n0 _var_n)
  )
  (setq name_ent (entsel "\nВыберите размер: "))
  (if name_ent
    (progn
      (setq list_ent (entget (car name_ent)))
      (while (not
	       (= (cdr (assoc 0 list_ent)) "DIMENSION")
	     )
	(setq name_ent (entsel "\nВыберите размер: "))
      )
      (setq list_ent  (entget (car name_ent))
	    dim_value (cdr (assoc 42 list_ent))
	    n1	      (rtos (/ dim_value _var_n) 2 0)
      )
      (entmod
	(subst
	  (cons	1
		(strcat	n1
			"x"
			(itoa _var_n)
			"=<>"
		)
	  )
	  (assoc 1 list_ent)
	  list_ent
	)
      )
    )
    (princ "Размер не выбран!")
  )
  (vla-endundomark adoc)
  (princ))
Сам в лиспе слаб и поэтому не могу устранить недостатки:
- надо выделять каждый размер отдельно
- если в самом размере было перебитое, а не истинное значение, лисп это не учитывает
Не найдется на форуме доброго человека?

Последний раз редактировалось sam_n, 15.09.2013 в 11:51. Причина: Описка
Просмотров: 6929
 
Размещение рекламы