Đế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

#2501 ketxu

ketxu

    Copier - Paster - Editor

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

Đã gửi 08 November 2010 - 11:50 AM

Bạn post nhầm topic rồi.Hơn nữa,hiện tượng của bạn chỉ gặp trên 1 file hay toàn bộ CAD?
  • 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


#2502 nguyentuyen6

nguyentuyen6

    biết lệnh chamfer

  • Advance Member
  • PipPipPipPip
  • 213 Bài viết
Điểm đánh giá: 124 (tàm tạm)

Đã gửi 08 November 2010 - 11:58 AM

Bạn THANHBIH oi! help mình với.Mình gặp rắc rối về bock.Mình tạo 1 block thì khi tạo xong cai bock đó lập tức biến mất.vậy nghĩa là sao hả bạn.Bị lỗi gì thế ThanhBình

Nêu bạn tạo block = lisp thì sau khi tạo phải thêm 1 bước insert nữa:

VD:
(command "_.BLOCK" tenblock diemchen doituongtaoblock ""
"_.INSERT" tenblock diemchen 1 1 0)

  • 0

Lisp In bản vẽ hàng loạt:
http://www.cadviet.c...ndpost&p=139860


#2503 httrungcad

httrungcad

    biết vẽ arc

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

Đã gửi 08 November 2010 - 11:59 AM

Bạn post nhầm topic rồi.Hơn nữa,hiện tượng của bạn chỉ gặp trên 1 file hay toàn bộ CAD?

mình xin lỗi vì nhầm topic nhưng vì gấp quá nên mình post lun.mong cac ban thông cảm.mình bị trên toàn bộ cad luôn bạn ơi.lúc truoc thì không có hiện tượng này.nhưng gần đây thì lại có.mình không bit làm sao cả
  • 0

#2504 httrungcad

httrungcad

    biết vẽ arc

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

Đã gửi 08 November 2010 - 12:05 PM

Nêu bạn tạo block = lisp thì sau khi tạo phải thêm 1 bước insert nữa:

VD:
(command "_.BLOCK" tenblock diemchen doituongtaoblock ""
"_.INSERT" tenblock diemchen 1 1 0)

cảm ơn bạn.Bạn có thể nói rõ hơn được không.Mình chỉ tạo 1 block bằng lệnh B thông thường thôi chứ ko phải băng list.Nhưng block đó biến mất khi mình tạo block xong.Thank bạn
  • 0

#2505 nguyentuyen6

nguyentuyen6

    biết lệnh chamfer

  • Advance Member
  • PipPipPipPip
  • 213 Bài viết
Điểm đánh giá: 124 (tàm tạm)

Đã gửi 08 November 2010 - 12:13 PM

cảm ơn bạn.Bạn có thể nói rõ hơn được không.Mình chỉ tạo 1 block bằng lệnh B thông thường thôi chứ ko phải băng list.Nhưng block đó biến mất khi mình tạo block xong.Thank bạn


Thì trong cái bảng block bạn chọn. Convert to block thay vì chọn Delete
  • 0

Lisp In bản vẽ hàng loạt:
http://www.cadviet.c...ndpost&p=139860


#2506 httrungcad

httrungcad

    biết vẽ arc

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

Đã gửi 08 November 2010 - 12:55 PM

Thì trong cái bảng block bạn chọn. Convert to block thay vì chọn Delete

uhm thank ban.hic
  • 0

#2507 phamthanhbinh

phamthanhbinh

    biết lệnh adcenter

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

Đã gửi 08 November 2010 - 01:07 PM

cảm ơn bạn.Bạn có thể nói rõ hơn được không.Mình chỉ tạo 1 block bằng lệnh B thông thường thôi chứ ko phải băng list.Nhưng block đó biến mất khi mình tạo block xong.Thank bạn

Hề hề hề, chớ có hoảng hốt vậy bạn ơi. Nó có biến đi đâu mất mà lo. Chẳng qua nó chỉ không hiển thị tren màn hình mà thôi. Còn block đã được tạo rồi. Bây giờ bạn muốn xem nó tròn méo ra răng chỉ việc vào lệnh insert và nhập tên cái block vừa tạo là nó sẽ hiện ra hoành tráng cho bạn tha hồ tùng xẻo. Hề hề hề....
  • 0
Chúc các quý Anh trên diễn đàn luôn khỏe, đẻ thêm được nhiều thứ để mót.

#2508 phamthanhbinh

phamthanhbinh

    biết lệnh adcenter

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

Đã gửi 08 November 2010 - 01:18 PM

@Tue_VN: lisp đổi 2 table hôm trước bạn viết cho mình hôm nay lại thấy có trường hợp không đúng, bạn sửa giúp mình nhé :)



- Việc thứ 2 mình muốn nhờ là từ lisp đổi cột có sẵn, thay vì chọn cột A , sau đó chọn cột B => đổi chỗ 2 cột thì đổi thành chọn nhiều cột : Chọn cột A1 , A2, ... An sau đó chọn các cột B1, B2 ... Bn => Đổi chỗ cột A1 với B1, A2 với B2 ... An với Bn .
Điều kiện:
- Số lượng text trong cột A1 A2 A3 .. An có thể khác nhau
- Số lượng text trong cột A1 phải bằng số lượng text trong cột B1 , A2 = B2 ... An = Bn

Lisp đổi cột cũ:

Hề hề hề, Chào bạn hdt4151,
Về cái lisp đổi cột , mạn phép bác Tue_NV mình thử bổ sung cái bạn cần vào lisp của bác ấy. Bạn dùng thử, nếu không hài lòng thì mình xin lỗi, đành chờ bác ấy ra tay vậy.

(defun c:csn (/ sslst1 sslst2 i j ss1 ss2 ss x1 x2 els1 els2 ent)

(alert "\n Chon hang thu nhat cua bang mot")
(setq sslst1 (acet-ss-to-list (ssget (list (cons 0 "text"))))
sslst1 (vl-sort sslst1 '(lambda (x y)
(< (cadr (assoc 10 (entget x))) (cadr (assoc 10 (entget y)))) )))
(alert "\n Chon hang thu nhat cua bang hai")
(setq sslst2 (acet-ss-to-list (ssget (list (cons 0 "text"))))
sslst2 (vl-sort sslst2 '(lambda (x y)
(< (cadr (assoc 10 (entget x))) (cadr (assoc 10 (entget y)))) )))
(if (= (length sslst1) (length sslst2))
(progn
(setq i 0)
(while (< i (length sslst1))
(setq els1 (entget (nth i sslst1 ))
x1 (cdr (assoc 10 els1))
els2 (entget (nth i sslst2 ))
x2 (cdr (assoc 10 els2))
ss (ssget "x" (list (cons 0 "text")))
j 0
i (1+ i)
ss1 (ssadd)
ss2 (ssadd)
)
(While ( < j (sslength ss))
(setq ent (ssname ss j))
(if (equal (cadr (assoc 10 (entget ent))) (car x1) 0.01)
(setq ss1 (ssadd ent ss1))
)
(if (equal (cadr (assoc 10 (entget ent))) (car x2) 0.01)
(setq ss2 (ssadd ent ss2))
)
(setq j (1+ j))
)

(cs ss1 ss2)
)
)
(alert "\n So cot trong hai bang khong bang nhau. Exit.")
)
)

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

(defun cs ( ss sx / lis1 lis2 n i nn mm li li1)
;Copy right by Tue_NV
(vl-load-com)
;;;;;(setq ss (ssget '((0 . "TEXT"))))
;;;;;;(setq sx (ssget '((0 . "TEXT"))))
(setq lis1 (vl-remove-if 'listp (mapcar 'cadr (ssnamex ss))))
(setq lis2 (vl-remove-if 'listp (mapcar 'cadr (ssnamex sx))))
(setq lis1 (vl-sort lis1 '(lambda (x y)
(if (equal (cadr (assoc 10 (entget x)))
(cadr (assoc 10 (entget y)))
(cdr (assoc 40 (entget x))) )
(< (caddr (assoc 10 (entget x)))
(caddr (assoc 10 (entget y)))
)
(< (cadr (assoc 10 (entget x)))
(cadr (assoc 10 (entget y)))
)
)
))
)
(setq lis2 (vl-sort lis2 '(lambda (x y)
(if (equal (cadr (assoc 10 (entget x)))
(cadr (assoc 10 (entget y)))
(cdr (assoc 40 (entget x))) )
(< (caddr (assoc 10 (entget x)))
(caddr (assoc 10 (entget y)))
)
(< (cadr (assoc 10 (entget x)))
(cadr (assoc 10 (entget y)))
)
)
))
)
(setq n (sslength ss) i 0)

(if (= (length lis1) (length lis2))
(progn
(while (< i (length lis1))

(setq nn (entget (nth i lis1)))
(setq mm (entget (nth i lis2)))

(setq li (cdr (assoc 1 nn)))

(setq li1 (cdr (assoc 1 mm)))


(setq nn (subst (cons 1 li1) (assoc 1 nn) nn))
(setq mm (subst (cons 1 li) (assoc 1 mm) mm))

(entmod mm)
(entmod nn)
(setq i (+ i 1))

)
)
(alert "\n Hai chuoi khong bang nhau. Lisp khong thuc hien duoc")
)

(princ)

)

Chúc bạn 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.

#2509 phamthanhbinh

phamthanhbinh

    biết lệnh adcenter

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

Đã gửi 08 November 2010 - 07:00 PM

@Tue_VN: lisp đổi 2 table hôm trước bạn viết cho mình hôm nay lại thấy có trường hợp không đúng, bạn sửa giúp mình nhé :)



Link: http://www.mediafire...0qilr6a6bairt83 (như trong link thì sau khi thay đổi hàng chữ "AS" đẩy lên hàng phía trên.

Chào bạn hdt4151,
Sở dĩ sau khi đổi cái text AScủa bạn bị nhảy lên hàng trên là do text của bạn sử dụng căn lề phải, trong khi lisp được viết dựa trên tọa độ của điểm đặt text là bên trái bạn ạ.
Bạn có thể tự sửa lisp cho trường hợp này bằng cách thay đổi toàn bộ các dòng mã có chứa (assoc 10 ....) thành (assoc 11 ....)
Hãy thử lại nhé.
  • 1
Chúc các quý Anh trên diễn đàn luôn khỏe, đẻ thêm được nhiều thứ để mót.

#2510 Tue_NV

Tue_NV

    KS Võ Quang Tuệ

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

Đã gửi 08 November 2010 - 07:24 PM

Chào bạn hdt4151,
Sở dĩ sau khi đổi cái text AScủa bạn bị nhảy lên hàng trên là do text của bạn sử dụng căn lề phải, trong khi lisp được viết dựa trên tọa độ của điểm đặt text là bên trái bạn ạ.
Bạn có thể tự sửa lisp cho trường hợp này bằng cách thay đổi toàn bộ các dòng mã có chứa (assoc 10 ....) thành (assoc 11 ....)
Hãy thử lại nhé.

Nếu sửa như cách của bác Bình thì có thể lại áp dụng không đúng trong 1 số trường hợp nữa đó bác Bình ạ
Bạn hdt4151, bác Bình hãy thử lại với đoạn Code này. Tue_NV viết lại nhé:

(defun c:cs(/ ss sx lis1 lis2 n i nn mm li li1)
;Copy right by Tue_NV
(defun dd(e1 e2 / tb1 tb2)
(setq tb1 (textbox e1) tb2 (textbox e2))
(max (abs (- (caadr tb1) (caar tb1)))
(abs (- (caadr tb2) (caar tb2)))
)
)
(vl-load-com)
(setq ss (ssget '((0 . "TEXT"))))
(setq sx (ssget '((0 . "TEXT"))))
(setq lis1 (vl-remove-if 'listp (mapcar 'cadr (ssnamex ss))))
(setq lis2 (vl-remove-if 'listp (mapcar 'cadr (ssnamex sx))))
(setq lis1 (vl-sort lis1 '(lambda (x y)
      (if (equal (cadr (assoc 10 (entget x)))
                 (cadr (assoc 10 (entget y)))
                 (dd (entget x) (entget y)) )
            (< (caddr (assoc 10 (entget x)))
               (caddr (assoc 10 (entget y)))
            )
        (< (cadr (assoc 10 (entget x)))
               (cadr (assoc 10 (entget y)))
            )        
             )
        ))
)
(setq lis2 (vl-sort lis2 '(lambda (x y)
      (if (equal (cadr (assoc 10 (entget x)))
                 (cadr (assoc 10 (entget y)))
                 (dd (entget x) (entget y))  )
            (< (caddr (assoc 10 (entget x)))
               (caddr (assoc 10 (entget y)))
            )
        (< (cadr (assoc 10 (entget x)))
               (cadr (assoc 10 (entget y)))
            )        
             )
        ))
)    
(setq n (sslength ss) i 0)

(if (= (length lis1) (length lis2))
(progn
   (while (< i (length lis1))

    (setq nn (entget (nth i lis1)))
    (setq mm (entget (nth i lis2)))

    (setq li (cdr (assoc 1 nn)))
    (setq li1 (cdr (assoc 1 mm)))
    (setq nn (subst (cons 1 li1) (assoc 1 nn) nn))
    (setq mm (subst (cons 1 li) (assoc 1 mm) mm))

    (entmod mm)
    (entmod nn)
    (setq i (+ i 1))

)
)
(alert "\n Hai chuoi khong bang nhau. Lisp khong thuc hien duoc")
)
(princ)

)

  • 2

#2511 hdt4151

hdt4151

    biết vẽ pline

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

Đã gửi 09 November 2010 - 08:21 AM

@Tue_VN: lisp chạy okie rùi, thanks bạn rất nhiều :)
@phamthanhbinh: lisp csn của bạn ý tưởng quét hàng 1 của bảng 1 và 2 khá hay, nhưng có nhược điểm các text đều phải canh trái và nên có giới hạn dưới của 2 bảng vì có thể vẫn có những text nằm dưới bảng nhưng không thuộc bảng mình cần đổi :D
  • 0

#2512 phamthanhbinh

phamthanhbinh

    biết lệnh adcenter

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

Đã gửi 09 November 2010 - 11:40 AM

Nếu sửa như cách của bác Bình thì có thể lại áp dụng không đúng trong 1 số trường hợp nữa đó bác Bình ạ
Bạn hdt4151, bác Bình hãy thử lại với đoạn Code này. Tue_NV viết lại nhé:

Hề hề hề,
Bác Tue_nv ơi, mình đã nói là chỉ đối với trường hợp cụ thể của bạn hdt4151 post lên thôi mà.
Thực ra với các text mà đã sử dụng căn lề thì mình nghĩ nó khá loằng ngoằng và phải phân biệt từng trường hợp căn lề cụ thể dựa trên mã dxf 71, 72, 73 mới có thể xếp cho nó chuẩn được. Song ngại tách các trường hợp quá, mà đa phần thì mỗi người thường có một cách xài riêng nên thôi thì cứ túm vào cái cụ thể của các bạn pót lên để làm cho nó nhanh. Việc xử lý với các trường hợp riêng biệt khác thì để các bạn ấy ngâm cứu và chỉnh sửa theo yêu cầu riêng của mỗi bạn sẽ tốt hơn cho cả các bạn ấy và cái lười cố hữu của mình.
Hề hề hề....
  • 0
Chúc các quý Anh trên diễn đàn luôn khỏe, đẻ thêm được nhiều thứ để mót.

#2513 Tue_NV

Tue_NV

    KS Võ Quang Tuệ

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

Đã gửi 09 November 2010 - 11:56 AM

Hề hề hề,
Bác Tue_nv ơi, mình đã nói là chỉ đối với trường hợp cụ thể của bạn hdt4151 post lên thôi mà.
Thực ra với các text mà đã sử dụng căn lề thì mình nghĩ nó khá loằng ngoằng và phải phân biệt từng trường hợp căn lề cụ thể dựa trên mã dxf 71, 72, 73 mới có thể xếp cho nó chuẩn được. Song ngại tách các trường hợp quá, mà đa phần thì mỗi người thường có một cách xài riêng nên thôi thì cứ túm vào cái cụ thể của các bạn pót lên để làm cho nó nhanh. Việc xử lý với các trường hợp riêng biệt khác thì để các bạn ấy ngâm cứu và chỉnh sửa theo yêu cầu riêng của mỗi bạn sẽ tốt hơn cho cả các bạn ấy và cái lười cố hữu của mình.
Hề hề hề....

Bác Bình đọc kỹ lại code của Tue_NV xem. Bài viết số 2540
Em đã viết lại và có thể áp dụng cho các trường hợp căn chỉnh nhưng không hề sử dụng tới mã DXF 71, 72, 73
Bác đọc kỹ lại sẽ rõ mà
Chúc bác vui.

Phạm vi sử dụng của Lisp đó là :
- Các cột không được xen lẫn với nhau, cột nào ra cột đó, các cột không được "đan xen" vào nhau. Còn căn chỉnh thì dễ chịu lắm : thế nào cũng được.
Chỉ có vậy thôi bạn hdt à. Bạn cứ thử xem nhé.
  • 1

#2514 tuyendcc

tuyendcc

    biết zoom

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

Đã gửi 10 November 2010 - 03:58 AM

Về trình độ lisp thì em quá gà. Các bác gúp đỡ em viết 2 cái lisp rất đơn giản thế này thôi nhé
1. vẽ hình chữ nhật: khi thực hiện lênh chương trình hỏi nhập chiều rộng (enter), nhập chiều dài (enter), sau đó pic 1 điểm -> vẽ hinh CN đó
2. vẽ hình tròn: khi thực hiện lênh chương trình hỏi nhập bán kính (enter), sau đó pic 1 điểm -> vẽ hinh tròn đó

thanks các cao thủ trước nha!!
  • 0

#2515 nguyentuyen6

nguyentuyen6

    biết lệnh chamfer

  • Advance Member
  • PipPipPipPip
  • 213 Bài viết
Điểm đánh giá: 124 (tàm tạm)

Đã gửi 10 November 2010 - 08:43 AM

Về trình độ lisp thì em quá gà. Các bác gúp đỡ em viết 2 cái lisp rất đơn giản thế này thôi nhé
1. vẽ hình chữ nhật: khi thực hiện lênh chương trình hỏi nhập chiều rộng (enter), nhập chiều dài (enter), sau đó pic 1 điểm -> vẽ hinh CN đó
2. vẽ hình tròn: khi thực hiện lênh chương trình hỏi nhập bán kính (enter), sau đó pic 1 điểm -> vẽ hinh tròn đó

thanks các cao thủ trước nha!!


1. Vẽ hình vuông và hình chữ nhật
2. Mình thấy Líp đâu có nhanh hơn lệnh đâu bạn????

; Ve hinh vuong: HV. Ve hinh chu nhat: HCN. Ve hinh tron : HT
;nguyentuyen6 @ CadViet
;=====================================================
(defun c:hcn (/ dx dy pt1 pt2 ptg)
(command "undo" "be")
(setq OldEcho (getvar "cmdecho"))
(setvar "cmdecho" 0)
       (setq ptg (getpoint "\nDiem dat:"))
        (setq dx (getreal "\nRong:"))
        (setq dy (getreal "\nDai:"))
(setq pt1 (polar ptg pi dx))
(setq pt2 (polar pt1 (/ pi 2) dy))
(setq ptc (acet-geom-midpoint ptg pt2))
  (reset)
(command ".rectang" ptg pt2)
(command ".move" (entlast) "" ptc ptg)
  (reset1)
(setvar "cmdecho" OldEcho)
(command "undo" "e")
        (princ)
  )
;=====================================================
(defun c:hv (/ dx pt1 pt2 ptc)

(command "undo" "be")
(setq OldEcho (getvar "cmdecho"))
(setvar "cmdecho" 0)

       (setq ptg (getpoint "\nDiem dat:"))
;        (setq dx (getreal "\nDai canh:"))

(setq
daicanhhv (cond (daicanhhv) (220))
daicanhhvold daicanhhv
daicanhhv (getreal (strcat "\nDai canh <"(rtos daicanhhvold 2 0)">: ")))
(if (= daicanhhv nil) (setq daicanhhv daicanhhvold))



(setq pt1 (polar ptg pi daicanhhv))
(setq pt2 (polar pt1 (/ pi 2) daicanhhv))
(setq ptc (acet-geom-midpoint ptg pt2))
  (reset)
(command ".rectang" ptg pt2)
(command ".move" (entlast) "" ptc ptg)
  (reset1)
(setvar "cmdecho" OldEcho)
(command "undo" "e")
        (princ)
  )
;=====================================================
(defun c:ht (/ bankinh)
(setq bankinh (getreal "\nBan kinh:"))
(reset)
(command ".circle" (getpoint "\nDat Tam:") bankinh)
(reset1)
(princ)
)
;=====================================================
  (defun reset()
    (setq old_osm (getvar "osmode"))
    (setvar "osmode" 0)
    )
;---------------------------------------
    (defun reset1()
    (setvar "osmode" old_osm)
   )

  • 0

Lisp In bản vẽ hàng loạt:
http://www.cadviet.c...ndpost&p=139860


#2516 hochoaivandot

hochoaivandot

    biết dimradius

  • Members
  • PipPipPipPipPip
  • 310 Bài viết
Điểm đánh giá: 107 (tàm tạm)

Đã gửi 10 November 2010 - 10:45 AM

Diễn đàn có thể giúp xây dựng thuộc toán hoặc viết lisp (càng tốt) xác định trọng tâm của 1 đa giác bất kỳ không ạ?
Đã thấy có người hỏi vấn đề này nhưng ở topic khác http://www.cadviet.com/cadtips/11551_Tim_trong_tam_cua_1_hinh_da_giac/116/
Mong được mọi người quan tâm. Xin cảm ơn!
  • 0

Dương Bá Diệp

 

www.cadonline.duyxuyen.vn 

 

Thành viên nhóm CADMAGIC

 


#2517 phamngoctukts

phamngoctukts

    biết lệnh adcenter

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

Đã gửi 10 November 2010 - 10:59 AM

Diễn đàn có thể giúp xây dựng thuộc toán hoặc viết lisp (càng tốt) xác định trọng tâm của 1 đa giác bất kỳ không ạ?
Đã thấy có người hỏi vấn đề này nhưng ở topic khác http://www.cadviet.com/cadtips/11551_Tim_trong_tam_cua_1_hinh_da_giac/116/
Mong được mọi người quan tâm. Xin cảm ơn!

Bạn có thể dùng code sau để lấy trọng tâm của đa giác
(setq tam (vlax-safearray->list (vlax-variant-value (vla-get-Centroid (vlax-ename->vla-object (car (entsel)))))))
  • 2
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!

#2518 phamngoctukts

phamngoctukts

    biết lệnh adcenter

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

Đã gửi 10 November 2010 - 11:11 AM

Bạn có thể dùng code sau để lấy trọng tâm của đa giác
(setq tam (vlax-safearray->list (vlax-variant-value (vla-get-Centroid (vlax-ename->vla-object (car (entsel)))))))

B/S: bạn phải chuyển da giác về region trước.
  • 0
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!

#2519 phamthanhbinh

phamthanhbinh

    biết lệnh adcenter

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

Đã gửi 10 November 2010 - 11:51 AM

Bạn có thể dùng code sau để lấy trọng tâm của đa giác
(setq tam (vlax-safearray->list (vlax-variant-value (vla-get-Centroid (vlax-ename->vla-object (car (entsel)))))))

Hề hề hề ,
Bác Phamngoctukts xem lại giùm cái hàm (vla-get-centroid .....) với bác nhé, Vì sao trong Cad 2004 đã có express tool mà nó vẫn báo:
; error: ActiveX Server returned the error: unknown name: Centroid
bác ạ???
  • 1
Chúc các quý Anh trên diễn đàn luôn khỏe, đẻ thêm được nhiều thứ để mót.

#2520 hochoaivandot

hochoaivandot

    biết dimradius

  • Members
  • PipPipPipPipPip
  • 310 Bài viết
Điểm đánh giá: 107 (tàm tạm)

Đã gửi 10 November 2010 - 12:26 PM

Hề hề hề ,
Bác Phamngoctukts xem lại giùm cái hàm (vla-get-centroid .....) với bác nhé, Vì sao trong Cad 2004 đã có express tool mà nó vẫn báo:
; error: ActiveX Server returned the error: unknown name: Centroid
bác ạ???


Cảm ơn anh phamthanhbinh, Phamngoctukts đã quan tâm.
Em dùng Cad2007, cũng đã cài express tool. Kết quả giống hệt như anh phamthanhbinh phản ảnh!
Anh Phamngoctu xem lại dùm với.
  • 0

Dương Bá Diệp

 

www.cadonline.duyxuyen.vn 

 

Thành viên nhóm CADMAGIC