Đến nội dung


Hình ảnh
* * * - - 8 Bình chọn

Viết lisp theo yêu cầu [phần 2]


  • Chủ đề bị khóa Chủ đề bị khóa
3783 replies to this topic

#3081 phamthanhbinh

phamthanhbinh

    biết lệnh adcenter

  • Moderator
  • PipPipPipPipPipPipPip
  • 6007 Bài viết
Điểm đánh giá: 3113 (tuyệt vời)

Đã gửi 23 January 2011 - 03:48 PM

@Các bác viết lisp : Hiện nay với các code có dùng hàm vl, e thường áp dụng đoạn này

ssename (vl-remove-if 'listp (mapcar 'cadr (ssnamex ss)))
để lấy list ename của tập chọn ss thay vì hàm ss2ent của bác Hoành vì thấy gọn hơn , nhưng quả thực e chưa suy luận được cái nào tốt hơn cái nào, mong các bác phân tích và chỉ giáo


Chào bác ketxu,
Quả thực câu hỏi của bác mình không trả lời được, song nó lại đẻ ra cái câu hỏi mà mình mong bác sẽ giải đáp giùm.
1/- Đó là mình nhòm ngó tìm kiếm trong help thì cái hàm ssnamex này có cú pháp là (ssnamex ss index). Và nếu thành công nó sẽ trả về một list có chứa các phần tử là các associate list tùy thuộc vào cách chọn tập hợp các đối tượng.
Vậy nhưng ở đây bác lại dùng (ssnamex ss) mà chả có cái index kèm theo. Vậy nó sẽ trả về cái chi bác hè????

2/- Nều chỉ là lấy danh sách các ename của các đối tượng có trong tập chọn ss, vì sao bác lại không dùng hàm (acet-ss-to-list ss) vì cứ theo cái ngu ý của mình thì nó có vẻ dễ dùng hơn bác ạ????

Vài cái thắc mắc, có thể không được minh mẫn cho lắm, mong bác chớ giận và cố gắng giải đáp giùm để mình bớt ....... thắc mắc hỉ????
Chúc bác khỏe và vui.....
  • 0
Chúc các quý Anh trên diễn đàn luôn khỏe, đẻ thêm được nhiều thứ để mót.

#3082 gia_bach

gia_bach

    biết lệnh adcenter

  • CADViet Team
  • PipPipPipPipPipPipPip
  • 1432 Bài viết
Điểm đánh giá: 1425 (rất tốt)

Đã gửi 23 January 2011 - 03:56 PM

Sau khi tìm hiểu hàm pause, mình đã làm lại cho bạn đây.Nói chung lisp này khá khù khoằm và không được đẹp, lại chẳng liên quan gì tới lisp đầu tiên mình viết cho bạn, tức là phải mần lại từ đầu ý, nên có hơi lâu.Bạn thử dùng xem sao.Hy vọng đã đúng ý bạn. Lệnh vẫn như cũ

...............................
@Các bác viết lisp : Hiện nay với các code có dùng hàm vl, e thường áp dụng đoạn này

ssename (vl-remove-if 'listp (mapcar 'cadr (ssnamex ss)))
để lấy list ename của tập chọn ss thay vì hàm ss2ent của bác Hoành vì thấy gọn hơn , nhưng quả thực e chưa suy luận được cái nào tốt hơn cái nào, mong các bác phân tích và chỉ giáo

Chào bác ketxu.
Về mặt lí thuyết thì hàm ss2ent của bác Hoành chạy nhanh hơn cách sử dụng hàm (vl-remove-if 'listp (mapcar 'cadr (ssnamex ss))).

Tuy nhiên thực tế hàm (ssnamex ss) trả về những giá trị gì ?
ssnamex : Retrieves information about how a selection set was created.
Vì hàm (ssnamex ss) trả về nhiều thông tin, nghĩa là CAD phải sử lí nhiều thao tác không cần thiết ?!

Chúng ta cùng xem xét 1 tập chọn ss gồm 10 đối tượng.
Hình đã gửi
Ở hình trên, ngoài thông tin về 10 đối tượng CAD còn trả về 4 dòng thông tin về các tọa độ khi người dùng pick trên màn hình.
Trong t/hợp truy xuất các đối tượng các thông tin này không cần thiết (nhưng ở t/hợp khác thì nó lại có ý nghĩa).
Tuy nhiên với tốc độ của máy tính hiện nay, thì thời gian này không đáng kể so với thời gian người dùng pick chọn đối tượng trên màn hình.
Sự khác biệt về tốc độ chỉ có ý nghĩa với các t/hợp phương pháp chọn đối tượng phức tạp (WPolygon, CPolygon, Fence, ... )
Vài dòng chia sẻ cùng bạn.


Chào bác ketxu,
Quả thực câu hỏi của bác mình không trả lời được, song nó lại đẻ ra cái câu hỏi mà mình mong bác sẽ giải đáp giùm.
1/- Đó là mình nhòm ngó tìm kiếm trong help thì cái hàm ssnamex này có cú pháp là (ssnamex ss index). Và nếu thành công nó sẽ trả về một list có chứa các phần tử là các associate list tùy thuộc vào cách chọn tập hợp các đối tượng.
Vậy nhưng ở đây bác lại dùng (ssnamex ss) mà chả có cái index kèm theo. Vậy nó sẽ trả về cái chi bác hè????

2/- Nều chỉ là lấy danh sách các ename của các đối tượng có trong tập chọn ss, vì sao bác lại không dùng hàm (acet-ss-to-list ss) vì cứ theo cái ngu ý của mình thì nó có vẻ dễ dùng hơn bác ạ????

Vài cái thắc mắc, có thể không được minh mẫn cho lắm, mong bác chớ giận và cố gắng giải đáp giùm để mình bớt ....... thắc mắc hỉ????
Chúc bác khỏe và vui.....

chào bác Bình.
câu 1 : bác xem hình tôi đã viết ở trên.
câu 2 : dĩ nhiên là hàm (acet-ss-to-list ss) đúng là cái chúng ta cần. Nhưng ý của ketxu là quan tâm đến cái nào tốt hơn ?
  • 2

#3083 ketxu

ketxu

    Copier - Paster - Editor

  • Moderator
  • PipPipPipPipPipPipPip
  • 5678 Bài viết
Điểm đánh giá: 2605 (tuyệt vời)

Đã gửi 23 January 2011 - 04:17 PM

@ Bác Phamthanhbinh :
1.E cũng hiểu nôm na là ntn :
Cú pháp của nó là (ssnamex ss [index]) :tức chỉ số index là option có hoặc không.Nếu đặt số cho nó thì kết quả sẽ trả về đúng thằng thứ [index] trong tập ss, bao gồm lssindex, ename và cách chọn ename (data dạng list).Nếu ta bỏ qua thông số này, kết quả sẽ trả về toàn bộ các phần tử , tức là sẽ thu được 1 list bao gồm các sublist của các phần tử và sắp xếp lại theo kiểu ((id ename1 data) (id ename2 data).....(list data))
Trong help viết là :
((sel_id1 ename1 (data))(sel_id2ename2 (data)) ... )
Sau đó ta lấy (mapcar 'cadr (ssnamex ss)) : lấy được list các phần tử bao gồm (ename+ phần tử thứ 2 của list data) -> Xóa cái phần tử thứ 2 của list data ở type list đi thì ta còn lại list ename
2.E đã thấy các bác trên 4room dùng nhiều hàm acet, nhưng chưa thực hành bao giờ ( vì bác Đường Thái khuyên e cẩn thận đừng lợi dụng kẻo nó chậm hơn ^^), có lẽ sau đây e xin đi vào thực tế để xem nó ntn ^^

P/S : e post lên thì đã thấy bác gia_bach giải thích cặn kẽ rồi ^^
  • 1

Thành viên nhóm CadMagic.
Mời bạn ghé thăm facebook nhóm - Page viết lisp theo yêu cầu  :
CAD MAGIC


#3084 phonui059

phonui059

    biết pan

  • Members
  • Pip
  • 9 Bài viết
Điểm đánh giá: 0 (bình thường)

Đã gửi 23 January 2011 - 04:51 PM

Sau khi tìm hiểu hàm pause, mình đã làm lại cho bạn đây.Nói chung lisp này khá khù khoằm và không được đẹp, lại chẳng liên quan gì tới lisp đầu tiên mình viết cho bạn, tức là phải mần lại từ đầu ý, nên có hơi lâu.Bạn thử dùng xem sao.Hy vọng đã đúng ý bạn. Lệnh vẫn như cũ

cảm ơn bạn ketxu rất nhiều. đây thực sự là cái mình đang cần. cảm ơn bạn nhiều lắm.
  • 0

#3085 hungvq

hungvq

    Chưa sử dụng CAD

  • Members
  • Pip
  • 4 Bài viết
Điểm đánh giá: 0 (bình thường)

Đã gửi 24 January 2011 - 02:56 PM

Mấy hôm rùi mình không theo dõi thường xuyên nên hôm nay mới trả lời bạn Ketxu được.
Cái lip "dt2" của bạn mình sử dụng ok rùi. Cảm ơn bạn Ketxu nhá!
  • 0

#3086 shitty

shitty

    biết zoom

  • Members
  • Pip
  • 19 Bài viết
Điểm đánh giá: 3 (bình thường)

Đã gửi 24 January 2011 - 03:32 PM

hix hok có bác nào xem giúp e với ah...cuối năm nên chắc các bác cũng bận :)....năm hết tết đến,chúc cho diễn đàn ngày càng phát triển,ban quản trị và các thành viên 1 năm mới nhiều sức khỏe và nhiều ...xiền...heh.

hok có bác nào giúp e sửa cái lisp này với nhỉ..:) huh
  • 0

#3087 ketxu

ketxu

    Copier - Paster - Editor

  • Moderator
  • PipPipPipPipPipPipPip
  • 5678 Bài viết
Điểm đánh giá: 2605 (tuyệt vời)

Đã gửi 24 January 2011 - 10:10 PM

hok có bác nào giúp e sửa cái lisp này với nhỉ..:) huh

Mình đã reply rồi mà bạn không để ý đó chứ : thà bạn nêu ý tưởng, mọi người viết cái mới giúp bạn có khi còn dễ hơn là sửa lại từ 1 code của tác giả khác ^^
  • 2

Thành viên nhóm CadMagic.
Mời bạn ghé thăm facebook nhóm - Page viết lisp theo yêu cầu  :
CAD MAGIC


#3088 phonui059

phonui059

    biết pan

  • Members
  • Pip
  • 9 Bài viết
Điểm đánh giá: 0 (bình thường)

Đã gửi 24 January 2011 - 11:24 PM

Nhờ các bạn sửa lại dùm tôi lisp này với. tôi cũng down trên cadviet về dùng. nhưng khi đánh lệnh thì nó chạy lặp lại 2 vòng trong khi đó chỉ cần 1 vòng là đủ, các bạn xem bản vẽ sẽ hiểu, nhờ các bạn sửa lại dùm. cảm ơn nhieeuf.
http://www.cadviet.c...iles/3/hskt.lsp
http://www.cadviet.c...drawing1_51.dwg
  • 0

#3089 ketxu

ketxu

    Copier - Paster - Editor

  • Moderator
  • PipPipPipPipPipPipPip
  • 5678 Bài viết
Điểm đánh giá: 2605 (tuyệt vời)

Đã gửi 25 January 2011 - 12:17 AM

Bạn à, cái này mục đích để ghi liên tiếp các vùng, không chỉ 2,mà nhiều nhiều ^^, với tiêu chí của tác giả là giải bài toán trong trường hợp tổng quát ^^ Nếu bạn muốn làm ngược lại thì cũng được thôi,nhưng liệu có nên :) Khi thực hiện lệnh xong, nếu bạn không muốn nữa thì đến chỗ nó hỏi điểm đầu, bạn cứ "Cách" 1 phát là xong mà, nhẹ nhàng ^^

Còn nếu quyết tâm dùng 1 lần, thì bạn dùng tạm cái này, mình bỏ hàm lặp while đi thôi, nó sẽ chỉ chạy 1 lần là out ^^."Tạm" là vì nó còn thông báo Unknown.... do có hàm Command nào đó bị ảnh hưởng, nhưng mình nghĩ k quan trọng :)

p/s : bạn có thể cho mình biết cái lisp này bác nào viết k ? Để mình ghi vào @ ^^
;; free lisp from cadviet.com

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;Chuong trinh danh so va lap bang toa do ho so thua dat dia chinh
;;;Bang toa do tao thanh block, duoc dat ten theo so thu tu 1, 2, 3...
;;;Chap nhan cac doi tuong la Region, Polyline, Line va Arc khep kin
;;;Written by - January 2009 - www.cadviet.com
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;PUBLIC FUNCTIONS
;;;-------------------------------------------------------------------------------
(Defun DTR (x) (/ (* x pi) 180))
;;;change degree to radian, return REAL
;;;-------------------------------------------------------------------------------
(defun lineP (p0 a r / p1)
;;;Line polar: point, degree angle, radius
(setq p1 (polar p0 (dtr a) r))
(command "line" p0 p1 "")
)
;;;-------------------------------------------------------------------------------
(defun linePX (p0 x) (lineP p0 0 x))
;;;Horizontal line: length x, from p0
;;;-------------------------------------------------------------------------------
(defun linePY (p0 y) (lineP p0 90 y))
;;;Vertical line: length y, from p0
;;;-------------------------------------------------------------------------------
(defun getVert (e / i L)
;;;Return list of all vertex from pline e
(setq i 0
L nil
)
(vl-load-com)
(repeat (fix (+ (vlax-curve-getEndParam e) 1))
(setq L (append L (list (vlax-curve-getPointAtParam e i))))
(setq i (1+ i))
)
L
)

;;; First point of List rearrangement
(defun relist(pt0 Lst / i rt)
(setq i 0)
(foreach pt Lst
(if (equal pt0 pt 0.001)
(setq rt i))
(setq i (1+ i)))
(append (append (member (nth rt Lst) Lst)
(cdr (reverse (cdr (member (nth rt Lst) (reverse Lst))))))
(list (nth rt Lst)))
)

;;;New Layer
(defun newlayer(a b c d)
(if (not (tblsearch "layer" a))
(command "-layer" "n" a "c" b a "l" c a "lw" d a ""))
)
;;;-------------------------------------------------------------------------------
(defun wtxtMC (txt p h k)
;;;Write text Middle Center, specify text, point, height
(entmake (list (cons 0 "TEXT")
(cons 7 (getvar "textstyle"))
(cons 1 txt)
(cons 10 p)
(cons 11 p)
(cons 40 h)
(cons 72 1)
(cons 73 2)
(if k (cons 51 (DTR 18)) (cons 51 0))
)
)
)
;;;-------------------------------------------------------------------------------
(defun Collect (e / e2 SS)
;;;Selection set from e to entlast
(setq SS (ssadd))
(ssadd e SS)
(while (setq e2 (entnext e)) (ssadd e2 SS) (setq e e2))
SS
)
;;;-------------------------------------------------------------------------------
(defun Collect1 (e / ss)
;;;Selection set after e to entlast. If e nil, select all from fist entity of drawing.
(if (= e nil)
(setq ss (collect (entnext)))
(progn (setq ss (collect e)) (ssdel e ss))
)
)
;;;-------------------------------------------------------------------------------

;;;PRIVATE FUNCTIONS
;;;-------------------------------------------------------------------------------
(defun txt1 (txtL / p1 p2 p3 p4 pL i)
;;;Write texts in 1 row
(setq
p1 (list (+ (car p0) (* 2 h)) (- (cadr p0) (* 1.5 h)))
p2 (polar p1 0 (* 7 h))
p3 (polar p2 0 (* 10 h))
p4 (polar p3 0 (* 9 h))
pL (list p1 p2 p3 p4)
i 0
)
(repeat 4
(wtxtMC (nth i txtL) (nth i pL) h t)
(setq i (1+ i))
)
)
;;;-------------------------------------------------------------------------------
(defun txt2 (txtL / p1 p2 p3 p4 pL i)
;;;Write texts in 1 row
(setq
p1 (list (+ (car p0) (* 2 h)) (- (cadr p0) (* 1.5 h)))
p2 (polar p1 0 (* 7 h))
p3 (polar p2 0 (* 10 h))
p4 (polar p3 0 (* 9 h))
p4 (polar p4 (* 0.5 pi) h)
pL (list p1 p2 p3 p4)
i 0
)
(repeat 4
(wtxtMC (nth i txtL) (nth i pL) h t)
(setq i (1+ i))
)
)
;;;-------------------------------------------------------------------------------
;;;MAIN PROGRAM
;;;-------------------------------------------------------------------------------
(defun C:HSKT (/ h p et p0 p00 p01 p02 pt pvL n j pv num txtL ss bn ntp)
(setvar "cmdecho" 0)

;;;New layer check
(newlayer "kichthuoc" 7 "continuous" "default")
(newlayer "stt" 1 "continuous" "default")
(newlayer "bangtd" 7 "continuous" "default")

;;;GET TEXT HEIGHT
(if (not h0) (setq h0 1))
(setq h (getreal (strcat "\nChon chieu cao text <" (rtos h0) ">:")))
(if (not h) (setq h h0) (setq h0 h))

;;;GET DECIMAL PRECISION
(if (not ntp0) (setq ntp0 2))
(setq ntp (getint (strcat "\nSo chu so thap phan <" (itoa ntp0) ">:")))
(if (not ntp) (setq ntp ntp0) (setq ntp0 ntp))

;;;GET CIRCLE RADIUS
(if (not cr0) (setq cr0 0.3))
(setq cr (getreal (strcat "\nNhap ban kinh vong tron <" (rtos cr0) ">:")))
(if cr (setq cr0 cr))

;;;PICK & BASE POINT
(initget "Y")
(setq save (getkword "\nBan co muon luu file? < Y / Enter for No >:"))

(setq oldos (getvar "osmode")
pdau (getpoint "\nPick diem dau tien (so thu tu = 1): " )
)

;(while pdau
(setq p (getpoint "\nPick 1 diem giua mien kin:")
pvL nil pvL1 nil)
(command "boundary" p "")
(setq et (entlast)
pvL1 (reverse (getvert et)))
(redraw et 3)
(setq p00 (getpoint "\nDiem dat Bang TDGR:"))
(command "erase" et "")
(setq p0 p00
p01 (polar p00 (* 1.5 pi) (* h 3))
pvL (relist pdau pvL1)
n (length pvL)
p02 (polar p01 (* 1.5 pi) (+ (* h 3) (* (1- n) h 2)))
)
(setvar "osmode" 0)
;;;HEADER
(setvar "CLAYER" "bangtd")
(linepx p0 (* 32 h))
(command "copy" "L" "" "m" p00 p01 p02 "")
(linepy p0 (- (distance p0 p02)))
(command "copy" "L" "" "m" p0
(list (+ (car p0) (* 4 h)) (cadr p0))
(list (+ (car p0) (* 14 h)) (cadr p0))
(list (+ (car p0) (* 24 h)) (cadr p0))
(list (+ (car p0) (* 32 h)) (cadr p0))
"")
(setq Lkqua nil)
(wtxtMC "BAÛNG TOÏA ÑOÄ GOÙC RANH"
(polar (polar p0 0 (* 16 h)) (* 0.5 pi) (* 2 h))
(* 1.2 h) nil)
(txt1 (setq Lkq (list "TT" "X (m)" "Y (m)" "S (m)")))
(setq Lkqua (append Lkqua (list Lkq)))
(setq p0 (polar p0 (* 1.5 pi) (* 3 h)))

;;;MAKE RECORDS
(setq j 0
pt nil)
(repeat n
(setq
pv (nth j pvL)
num (itoa (1+ j))
)
(if pt
(setq S (rtos (distance pt pv) 2 ntp))
(setq S "")
)
(setq
txtL (list num (rtos (car pv) 2 ntp) (rtos (cadr pv) 2 ntp) S)
Lkqua (append Lkqua (list txtL))
)
(txt2 txtL)
(setq p0 (polar p0 (* 1.5 pi) (* 2 h)))
(setq pt pv)
(setq j (1+ j))
(if (= j (- n 1)) (setq j 0))
)

;;;MAKE BLOCK
(setq ss (collect1 et))
(setq bn "1")
(while (tblsearch "block" bn)
(setq bn (itoa (1+ (atoi bn))))
)
(command "block" bn p00 ss "")
(command "insert" bn p00 "" "" "")

;;;WRITE POINT NAME
(setvar "CLAYER" "stt")
(setq j 0)
(repeat (1- n)
(setq
pv (nth j pvL)
num (itoa (1+ j))
)
(wtxtMC num (polar pv 0 h) h t)
(command "circle" pv cr0)
(command "erase" vtron "")
(setq j (1+ j))
)

;;;GHI CANH THUA
(setvar "CLAYER" "kichthuoc")
(ghicanh)

;;;FINISH
(savef)
(setvar "osmode" oldos)
;(setq pdau (getpoint "\nPick diem dau tien (so thu tu = 1) :"))
;;; )
(setvar "cmdecho" 1)
(princ)
)

;;;-------------------------------------------------------------------------------
(defun savef()
(if save
(progn
(setq file (open (setq tenfile (strcat (getvar "dwgprefix")
(vl-filename-base (vl-string-right-trim "\\" (getvar "dwgname"))) ".txt")) "a"))
(foreach line Lkqua
(setq line1 "")
(foreach it line
(setq line1 (strcat line1 " " it)))
(write-line line1 file)
)
(close file)
(princ (strcat "\nDa luu thanh file " tenfile))
)
)
)

;;;PHAN BO SUNG
;;;------------------------------------------------------------------------------------
(defun Text_canh_TCA (S p a )
;;;Entmake text S at p with angle A - Top Center
(if (/= p nil)
(entmake (list
(cons 0 "TEXT")
(cons 62 2)
(cons 10 p)
(cons 40 h)
(cons 1 S)
(cons 50 a )
(cons 41 0.7)
(cons 7 (getvar "textstyle"))
(cons 72 1)
(cons 11 p)
(cons 73 3)
)
)
)
)
;;;------------------------------------------------------------------------------------
(defun Text_canh_BCA (S p a )
;;;Entmake text S at p with angle A - Bottom Center
(if (/= p nil)
(entmake (list
(cons 0 "TEXT")
(cons 62 2)
(cons 10 p)
(cons 40 h)
(cons 1 S)
(cons 50 a )
(cons 41 0.7)
(cons 7 (getvar "textstyle"))
(cons 72 1)
(cons 11 p)
(cons 73 1)
)
)
)
)
;;;-------------------------------------------------------------------------------
(defun Ghicanh (/ i k p1 p2 dist rad x_mp y_mp mp)
(setq
i 0
k (1- (length pvL))
)
(repeat k
(setq
p1 (nth i pvL)
p2 (nth (+ i 1) pvL)
dist (distance p1 p2)
rad (angle p1 p2)
x_mp (* (+ (car p1) (car p2)) 0.5)
y_mp (* (+ (cadr p1) (cadr p2)) 0.5)
mp (list x_mp y_mp)
)
(if (and (> rad (* 0.5 pi)) (<= rad (* 1.5 pi)))
(setq mp (polar mp (+ rad (* 0.5 pi)) (* 0.3 h)))
)
(if (and (> rad (* 0.5 pi)) (<= rad (* 1.5 pi)))
(progn
(setq rad (+ rad pi))
(Text_canh_TCA (rtos dist 2 2) mp rad)
)
(Text_canh_BCA (rtos dist 2 2) mp rad)
)
(setq i (1+ i))
)
;; repeat k;
)
;;;--------------------------

  • 2

Thành viên nhóm CadMagic.
Mời bạn ghé thăm facebook nhóm - Page viết lisp theo yêu cầu  :
CAD MAGIC


#3090 tuvanthietke.hcm

tuvanthietke.hcm

    biết lệnh array

  • Members
  • PipPipPip
  • 182 Bài viết
Điểm đánh giá: 4 (bình thường)

Đã gửi 25 January 2011 - 08:28 AM

Lisp vẽ móng BTCT ^^ Bạn nào có không, mình chỉ cần modul vẽ móng và mc móng thôi
  • 0

#3091 lythang

lythang

    biết vẽ line

  • Members
  • PipPip
  • 20 Bài viết
Điểm đánh giá: 0 (bình thường)

Đã gửi 25 January 2011 - 09:02 AM

Chào bạn. Mình có một vấn đề muốn nhờ bạn giải quyết hộ.

- Mình đang làm công tác về đo đạc phân lô nền khu dân cư, lập bản đồ địa chính. Mình đang dùng soft MicroStation SE của tổng cục địa chính ban hành. Nhưng khi đo đạc có số liệu xong rồi mình thường dùng Cad để vẽ (Cad và MicroStation SE có thể hổ trợ lẫn nhau). Nhưng khi vẽ trên Cad xong (vẽ trên nhiều lớp trên Cad,) mình xuất ra file *.dfx để dùng MicroStation SE để làm bản đồ địa chính bổ sung. Nhưng MicroStation SE không thể nhận lớp từ Cad mà nó chỉ dồn về 1 lớp trong SE.

- Em muốn có lisp nào khi thiết kế trên CAd xong thì load lsip đó để convert qua SE thì lớp nào ra lớp đó.

- Mong anh giúp đở giùm.
  • 0

#3092 ketxu

ketxu

    Copier - Paster - Editor

  • Moderator
  • PipPipPipPipPipPipPip
  • 5678 Bài viết
Điểm đánh giá: 2605 (tuyệt vời)

Đã gửi 25 January 2011 - 09:05 AM

Lisp vẽ móng BTCT ^^ Bạn nào có không, mình chỉ cần modul vẽ móng và mc móng thôi

Nếu mình nhớ không nhầm thì có trong bộ Fastcad, bạn tìm kiếm xem sao.
Góp ý bạn : mỗi cty một ISO vẽ riêng , những yêu cầu chung chung như thế này là câu hỏi hàng triệu người vẫn đang đau đầu giải quyết, nên nếu có, cũng chỉ là để bạn tham khảo và edit trong khả năng. Mình đã theo dõi topic Tổng hợp lisp XDDD và nhờ sửa của bạn, nên thiết nghĩ bạn cũng nên vọc với lisp một chút để có khả năng tùy biến theo ý của mình.Chúc bạn vui
  • 1

Thành viên nhóm CadMagic.
Mời bạn ghé thăm facebook nhóm - Page viết lisp theo yêu cầu  :
CAD MAGIC


#3093 ketxu

ketxu

    Copier - Paster - Editor

  • Moderator
  • PipPipPipPipPipPipPip
  • 5678 Bài viết
Điểm đánh giá: 2605 (tuyệt vời)

Đã gửi 25 January 2011 - 09:11 AM

Chào bạn. Mình có một vấn đề muốn nhờ bạn giải quyết hộ.

- Mình đang làm công tác về đo đạc phân lô nền khu dân cư, lập bản đồ địa chính. Mình đang dùng soft MicroStation SE của tổng cục địa chính ban hành. Nhưng khi đo đạc có số liệu xong rồi mình thường dùng Cad để vẽ (Cad và MicroStation SE có thể hổ trợ lẫn nhau). Nhưng khi vẽ trên Cad xong (vẽ trên nhiều lớp trên Cad,) mình xuất ra file *.dfx để dùng MicroStation SE để làm bản đồ địa chính bổ sung. Nhưng MicroStation SE không thể nhận lớp từ Cad mà nó chỉ dồn về 1 lớp trong SE.

- Em muốn có lisp nào khi thiết kế trên CAd xong thì load lsip đó để convert qua SE thì lớp nào ra lớp đó.

- Mong anh giúp đở giùm.

Hok biết bạn lythang hỏi ai, nhưng mình cũng muốn hỏi bạn 1 câu ntn : Bạn đã có ý niệm cái "lisp" làm việc đó sẽ làm việc trên môi trường nào chưa :).
Vấn đề : CAD đã xuất ra *.dfx bình thường -> SE đọc lại k nhận lớp -> vấn đề ở thằng SE -> "lisp" trong SE.Còn việc SE có hỗ trợ làm cái "lisp" không thì mình hok chắc :)
Hơn nữa, phần mềm SE của CỤC đó, mình chưa được ngó qua, chắc nhiều người trên đây cũng vậy :)
  • 0

Thành viên nhóm CadMagic.
Mời bạn ghé thăm facebook nhóm - Page viết lisp theo yêu cầu  :
CAD MAGIC


#3094 lythang

lythang

    biết vẽ line

  • Members
  • PipPip
  • 20 Bài viết
Điểm đánh giá: 0 (bình thường)

Đã gửi 25 January 2011 - 09:16 AM

Hok biết bạn lythang hỏi ai, nhưng mình cũng muốn hỏi bạn 1 câu ntn : Bạn đã có ý niệm cái "lisp" làm việc đó sẽ làm việc trên môi trường nào chưa :).
Vấn đề : CAD đã xuất ra *.dfx bình thường -> SE đọc lại k nhận lớp -> vấn đề ở thằng SE -> "lisp" trong SE.Còn việc SE có hỗ trợ làm cái "lisp" không thì mình hok chắc :)
Hơn nữa, phần mềm SE của CỤC đó, mình chưa được ngó qua, chắc nhiều người trên đây cũng vậy :)

SE là phần mềm biên tập bản đồ. Dù sao cũng Thanks anh KetXu. Mong là có anh em nào củng cảnh ngộ như mình thì giúp giùm.
  • 0

#3095 phamthanhbinh

phamthanhbinh

    biết lệnh adcenter

  • Moderator
  • PipPipPipPipPipPipPip
  • 6007 Bài viết
Điểm đánh giá: 3113 (tuyệt vời)

Đã gửi 25 January 2011 - 10:25 AM

Chào bạn. Mình có một vấn đề muốn nhờ bạn giải quyết hộ.

- Mình đang làm công tác về đo đạc phân lô nền khu dân cư, lập bản đồ địa chính. Mình đang dùng soft MicroStation SE của tổng cục địa chính ban hành. Nhưng khi đo đạc có số liệu xong rồi mình thường dùng Cad để vẽ (Cad và MicroStation SE có thể hổ trợ lẫn nhau). Nhưng khi vẽ trên Cad xong (vẽ trên nhiều lớp trên Cad,) mình xuất ra file *.dfx để dùng MicroStation SE để làm bản đồ địa chính bổ sung. Nhưng MicroStation SE không thể nhận lớp từ Cad mà nó chỉ dồn về 1 lớp trong SE.

- Em muốn có lisp nào khi thiết kế trên CAd xong thì load lsip đó để convert qua SE thì lớp nào ra lớp đó.

- Mong anh giúp đở giùm.

Hề hề hề,
Bạn thử làm cách này xem sao:
1/- Xuất thành các bản vẽ CAD độc lập mà mỗi bản chỉ chứa 1 hay vài lớp mà bạn cần
2/- Xuất các thằng này sang cái mícrostation SE của bạn.

Hy vọng bạn thành công...

Bài viết đã được chỉnh sửa nội dung bởi phamthanhbinh: 08 February 2011 - 09:41 AM
Lỗi chính tả

  • 1
Chúc các quý Anh trên diễn đàn luôn khỏe, đẻ thêm được nhiều thứ để mót.

#3096 ketxu

ketxu

    Copier - Paster - Editor

  • Moderator
  • PipPipPipPipPipPipPip
  • 5678 Bài viết
Điểm đánh giá: 2605 (tuyệt vời)

Đã gửi 25 January 2011 - 10:35 AM

Hoặc là bạn thử block toàn bộ file xem sao ? liệu cho nó vào 1 đối tượng như thế nó còn chuyển qua 1 layer nữa không? Mình nghĩ cũng không khả thi lắm, vì đó là cách quản lý của nó rồi
  • 0

Thành viên nhóm CadMagic.
Mời bạn ghé thăm facebook nhóm - Page viết lisp theo yêu cầu  :
CAD MAGIC


#3097 LiveView

LiveView

    biết zoom

  • Members
  • Pip
  • 11 Bài viết
Điểm đánh giá: 5 (bình thường)

Đã gửi 26 January 2011 - 10:11 PM

Mình đang cần 1 lisp chon tất cả các block trong bản vẽ (mình đã search rồi nhưng chỉ có lisp chọn các block có tên giống nhau) & 1 lisp chọn tất cả các đối tượng Dim trong bản vẽ. Vui lòng giúp mình nhe. Thanks ! :s_big:
  • 0

#3098 phamngoctukts

phamngoctukts

    biết lệnh adcenter

  • CADViet Team
  • PipPipPipPipPipPipPip
  • 1107 Bài viết
Điểm đánh giá: 696 (tốt)

Đã gửi 26 January 2011 - 10:49 PM

Mình đang cần 1 lisp chon tất cả các block trong bản vẽ (mình đã search rồi nhưng chỉ có lisp chọn các block có tên giống nhau) & 1 lisp chọn tất cả các đối tượng Dim trong bản vẽ. Vui lòng giúp mình nhe. Thanks ! :s_big:

Bạn làm như sau không cần lisp liếc gì đâu
chọn block (tại dòng command gõ như sau)
command:(ssget "x" '((0 . "INSERT")))
command:(command "select" "p")
chọn dim
command:(ssget "x" '((0 . "DIMENSION")))
command:(command "select" "p")
  • 1
Tất cả vì sự phát triển của diễn đàn ...
Cám ơn đừng nói lời suông mà hãy nhấn Hình đã gửi!

#3099 TRUNGNGAMY

TRUNGNGAMY

    biết lệnh block

  • Members
  • PipPipPipPipPipPip
  • 401 Bài viết
Điểm đánh giá: 91 (tàm tạm)

Đã gửi 27 January 2011 - 01:37 AM

Chào bạn. Mình có một vấn đề muốn nhờ bạn giải quyết hộ.

- Mình đang làm công tác về đo đạc phân lô nền khu dân cư, lập bản đồ địa chính. Mình đang dùng soft MicroStation SE của tổng cục địa chính ban hành. Nhưng khi đo đạc có số liệu xong rồi mình thường dùng Cad để vẽ (Cad và MicroStation SE có thể hổ trợ lẫn nhau). Nhưng khi vẽ trên Cad xong (vẽ trên nhiều lớp trên Cad,) mình xuất ra file *.dfx để dùng MicroStation SE để làm bản đồ địa chính bổ sung. Nhưng MicroStation SE không thể nhận lớp từ Cad mà nó chỉ dồn về 1 lớp trong SE.

- Em muốn có lisp nào khi thiết kế trên CAd xong thì load lsip đó để convert qua SE thì lớp nào ra lớp đó.

- Mong anh giúp đở giùm.

Theo như mình biết, Micỏtation SE chỉ cho tạo 63 layer và chỉ nhận tên layer dạng số. Muốn Mic hiểu đc tên layer từ cad thì bạn phải khai báo thêm trong file dwglevel.tbl có trong một đường dẫn nào đó của thư mục cài đặt Mic (mình cũng ít làm nên kg nhớ), trong đó đã có hướng dẫn. Đại khái như sau :
[tenlayercad] [tenlayerMic]
Ví dụ :
1 1
2 2
Ranhdat 10
(chú ý : Mic SE chỉ nhận tên layer của cad tối đa 7 ký tự)
  • 0

#3100 Tue_NV

Tue_NV

    KS Võ Quang Tuệ

  • Moderator
  • PipPipPipPipPipPipPip
  • 4296 Bài viết
Điểm đánh giá: 3804 (đỉnh cao)

Đã gửi 27 January 2011 - 08:25 AM

Mình đang cần 1 lisp chon tất cả các block trong bản vẽ (mình đã search rồi nhưng chỉ có lisp chọn các block có tên giống nhau) & 1 lisp chọn tất cả các đối tượng Dim trong bản vẽ. Vui lòng giúp mình nhe. Thanks ! :s_big:

Sao bạn không sử dụng lệnh Filter hay là Quick select hoặc là lệnh SSX?
  • 0