въпрос за autocad
3 отговора
258 прегледа
въпрос за autocad
имам малко взимане-даване с едни разработчици на електроника, които ми пращат лейаута на DXF 2Д файлове, които обаче са супер странни ...
сега нямам да покажа, ама става дума за следното
навсякъде където има крива (закръгление, окръжност и тн.) не е изпълнена като една крива а като много навързани малки прави линиики
аутокада си работо с това без проблем, но опитам ли се да отворя файла някъде другаде (примерно в корел дроу) и програмата се здухва, защото ства дума примерно за 40000 обекта (всяка една малка права линийка е отделен обект)
та въпроса е , може ли някак автоматично в аутокад да се оправят тия кръгчета и закръгления съставени от малки отсечки в истински криви
сега нямам да покажа, ама става дума за следното
навсякъде където има крива (закръгление, окръжност и тн.) не е изпълнена като една крива а като много навързани малки прави линиики
аутокада си работо с това без проблем, но опитам ли се да отворя файла някъде другаде (примерно в корел дроу) и програмата се здухва, защото ства дума примерно за 40000 обекта (всяка една малка права линийка е отделен обект)
та въпроса е , може ли някак автоматично в аутокад да се оправят тия кръгчета и закръгления съставени от малки отсечки в истински криви
Re: въпрос за autocad
Превърни ги в полилинии.
Ето ти една програмка (всъщност три)
Пишеш (LTOP) в командния ред, посочваш една линия и програмата съединява всички свързани линии.
С (NAB-L-PL) можеш предварително да избереш всички нужни линии например с QSELECT и след това пишеш в командния ред (NAB-L-PL) и всички избрани линии се съединяват в полилинии.
По- сложен е въпросът с превръщането на набора от малки линии в дъгов сегмент на полилиния. Мисля, че бях правил нещо такова, но не го намирам.
;--------------- LTOP -----------------
(defun ltop( / r l)
(setq
l (car (entsel "\nSelect line "))
)
(ltopi l)
(TERPRI)
L
);ltop
;ltopi
(defun ltopi (l / r)
(if l
(PROGN
(command "zoom" "a")
(SETQ
r (ssget "c" (getvar "extmin") (getvar "extmax"))
)
(command "u")
(if(or
(= (cdr (assoc 0 (entget l))) "POLYLINE")
(= (cdr (assoc 0 (entget l))) "LWPOLYLINE")
)
(command "pedit" l "j" r "" "x")
(command "pedit" l "y" "j" r "" "x")
);IF CDR
(QUOTE OK!)
);PROGN
(QUOTE NOT_SELECTED_LINE!)
);if not l
l
);ltopi
;превръща набор от линии в полилинии
(defun nab-l-pl ( / nab nn)
(if (setq nab (ssget))
(PROGN
(FOREACH nn (ssnamex nab)
(if (= (type (nth 1 nn)) 'ENAME )
(ltopi (nth 1 nn))
);if
);FOREACH
);PROGN
);if nab
);nab-l-pl
Ето ти една програмка (всъщност три)
Пишеш (LTOP) в командния ред, посочваш една линия и програмата съединява всички свързани линии.
С (NAB-L-PL) можеш предварително да избереш всички нужни линии например с QSELECT и след това пишеш в командния ред (NAB-L-PL) и всички избрани линии се съединяват в полилинии.
По- сложен е въпросът с превръщането на набора от малки линии в дъгов сегмент на полилиния. Мисля, че бях правил нещо такова, но не го намирам.
;--------------- LTOP -----------------
(defun ltop( / r l)
(setq
l (car (entsel "\nSelect line "))
)
(ltopi l)
(TERPRI)
L
);ltop
;ltopi
(defun ltopi (l / r)
(if l
(PROGN
(command "zoom" "a")
(SETQ
r (ssget "c" (getvar "extmin") (getvar "extmax"))
)
(command "u")
(if(or
(= (cdr (assoc 0 (entget l))) "POLYLINE")
(= (cdr (assoc 0 (entget l))) "LWPOLYLINE")
)
(command "pedit" l "j" r "" "x")
(command "pedit" l "y" "j" r "" "x")
);IF CDR
(QUOTE OK!)
);PROGN
(QUOTE NOT_SELECTED_LINE!)
);if not l
l
);ltopi
;превръща набор от линии в полилинии
(defun nab-l-pl ( / nab nn)
(if (setq nab (ssget))
(PROGN
(FOREACH nn (ssnamex nab)
(if (= (type (nth 1 nn)) 'ENAME )
(ltopi (nth 1 nn))
);if
);FOREACH
);PROGN
);if nab
);nab-l-pl
Re: въпрос за autocad
Благодалря и аз за програмката. Полезна е много в областта, в която се
занимавам в момента - CAM за листов 2,5D разкрой.
10Х
занимавам в момента - CAM за листов 2,5D разкрой.
10Х