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

Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Вершины тела (ACIS 3dSolid)

Вершины тела (ACIS 3dSolid)

Ответ
Поиск в этой теме
Непрочитано 19.10.2006, 19:49 #1
Вершины тела (ACIS 3dSolid)
Евгений А.
 
Армспорт
 
Ейск
Регистрация: 18.07.2006
Сообщений: 355

Несколько раз встречал вопрос о нахождении координат вершин твёрдого

тела (ACIS 3dSolid). Написал для этих господ программульку, которая

расшифровывает ACIS данных тела и извлекает координаты вершин и

центров радиусов.
Пользуйтесь наздоровье!!!
Это вообще кому-нибудь интересно??? :?:
[ATTACH]1161272925.rar[/ATTACH]
Просмотров: 3479
 
Непрочитано 20.10.2006, 09:35
#2
Эдуард

строительство
 
Регистрация: 16.01.2004
Петербург
Сообщений: 165
<phrase 1=


Вопрос - зачем прятать функцию в VLX ? Боитесь плагиата?
Представляю свой вариант:
Код:
[Выделить все]
(defun 3ddecode	(/ obj)
  (if
    (and
      (setq obj (car (entsel)))
      (member (cdr (assoc 0 (setq obj (entget obj))))
	      '("3DSOLID" "REGION" "BODY")
      )
    )
     (progn
       (setq obj

	      (mapcar
		'(lambda (b)
		   (read (strcat "(" b ")"))
		 )
		(mapcar
		  'vl-list->string
		  (mapcar
		    '(lambda (y)
		       (subst 10
			      127
			      (mapcar '(lambda (z / s)
					 (if (< (setq s (boole 6 z 95)) 33)
					   (+ s 64)
					   s
					 )
				       )
				      y
			      )
		       )
		     )
		    (mapcar
		      'vl-string->list
		      (mapcar
			'cdr

			(vl-remove
			  'nil
			  (vl-remove-if-not '(lambda (x) (= (car x) 1)) obj)
			)
		      )
		    )
		  )

		)
	      )

       )
     )
  )

)


(defun es_decode-point ()
  (foreach i
  (mapcar
    '(lambda (w)
       (list (nth 0 w) (nth 1 w) (nth 2 w))
     )
    (mapcar 'cdr
	    (mapcar
	      '(lambda (y)
		 (vl-remove-if
		   '(lambda (z)
		      (= (type z) 'SYM)
		    )
		   y
		 )
	       )
	      (vl-remove-if-not
		'(lambda (x)
		   (and
		     (= (type (car x)) 'SYM)
		     (wcmatch (vl-symbol-name (car x))
			      "POINT,*SURFACE,*CURVE"
		     )
		   )
		 )
		(3ddecode)
	      )
	    )
    )
  )
    (vla-addpoint (vla-get-ModelSpace(vla-get-ActiveDocument(vlax-get-acad-object))) (vlax-3d-point i))
    )
  (princ)
)
Эдуард вне форума  
 
Автор темы   Непрочитано 20.10.2006, 11:43
#3
Евгений А.

Армспорт
 
Регистрация: 18.07.2006
Ейск
Сообщений: 355


Извиняюсь - накосячил!!! Только сейчас заметил, что не написал самой комманды к проге - Команда "acis-point" (или "aaa" "ффф") !!!
Теперь отвечаю.
Ну во первых VLX из за диалога (вы же не запускали!), а во вторых в ней функция из коммерческой программы.
Ваша программа выдаёт много лишних и ненужных точек (например, середины (не всегда поссередине!) рёбер, начало эллиптического ребра (даже для замкнутого!) - это может свести на нет весь ррезультат. у меня кстати вылетела Ваша на сложном теле...
Да, а зачем это (boole 6 z 95) всё намного проще и понятней (- 159 z)!!!
Евгений А. вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Вершины тела (ACIS 3dSolid)

Размещение рекламы