Đến nội dung


Hình ảnh
5 stars - based on 24598 reviews
* * * - - 3 Bình chọn

Hướng dẫn lập trình Lisp


  • Please log in to reply
493 replies to this topic

#241 dkkx3a

dkkx3a

    biết lệnh trim

  • Members
  • PipPipPip
  • 190 Bài viết
Điểm đánh giá: 58 (tàm tạm)

Đã gửi 13 August 2010 - 12:53 PM

Lisp chạy rất tốt, thanks bạn nhé. Bạn giúp mình thêm 1 chút nữa đc ko, thay vì pick chọn vị trí text rồi ghi text vào thì bây h đổi lại là chọn 1 text đã có sẵn, ghi diện tích vào text có sẵn đó ^^'


Đây bạn, bạn dùng thử cái này nhé:

;============================
(defun c:vd2(/ dt text luu_dim)
(setq luu_dim (getvar "dimzin"))
(setvar "dimzin" 0)
(vl-load-com)
(setq dt (vlax-ename->vla-object (car(entsel "\nPick doi tuong tinh dien tich: "))))
(if (vlax-property-available-p dt 'Area)
(progn
(setq dt (vlax-get-property dt 'Area)
dt (rtos dt 2 2)
)
(setq text (vlax-ename->vla-object (car(entsel "\nPick Text ghi ket qua: "))))
(vlax-put-property text 'TextString dt)
)
(princ "\nDoi tuong chon khong co dien tich !!!")
)
(setvar "dimzin" luu_dim)
(princ)
)
;============================


@ Nhấn Thanks để thể hiện mọi lời cảm ơn. hì hì.........
  • 1
TỰ SỰ
Biển vào chiều buồn giữa cô liêu
Sóng vỗ bờ bạc đầu con nước
Khi biển động như lòng ta chợt động
Biển ồn ào nhưng thực rất dịu êm.......

#242 hdt4151

hdt4151

    biết vẽ pline

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

Đã gửi 13 August 2010 - 01:22 PM

okie, thanks bạn rất nhiều ^^
  • 0

#243 Thaistreetz

Thaistreetz

    biết lệnh adcenter

  • Advance Member
  • PipPipPipPipPipPipPip
  • 913 Bài viết
Điểm đánh giá: 513 (tốt)

Đã gửi 14 August 2010 - 01:36 PM

khi làm việc với group, nếu muốn chỉnh sửa hoặc xoá 1 đối tuợng con trong group ta cần gõ tổ hợp fím Ctrl+Shift+A để bật/tắt liên kết của các đối tuợng trong group.
Mình đoán chắc chắn là có 1 biến hệ thống nào đó lưu giữ thông tin trạng thái ON/OFF này của group (giống như biến "ACAD_WIPEOUT_VARS" lưu trạng thái ON/OFF của wipeout) nhưng chưa tìm được. Bác nào biết thông tin giúp mình với
  • 0

Hình đã gửi
IN HIM, I TRUST. THE TRUST IN MY GOD


#244 gia_bach

gia_bach

    biết lệnh adcenter

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

Đã gửi 14 August 2010 - 02:48 PM

khi làm việc với group, nếu muốn chỉnh sửa hoặc xoá 1 đối tuợng con trong group ta cần gõ tổ hợp fím Ctrl+Shift+A để bật/tắt liên kết của các đối tuợng trong group.
Mình đoán chắc chắn là có 1 biến hệ thống nào đó lưu giữ thông tin trạng thái ON/OFF này của group (giống như biến "ACAD_WIPEOUT_VARS" lưu trạng thái ON/OFF của wipeout) nhưng chưa tìm được. Bác nào biết thông tin giúp mình với

Sử dụng biến hệ thống : pickstyle

Trích từ Help :
To control whether all grouped objects can be selected individually
Do one of the following:
- At the command prompt, enter pickstyle. Enter 1 to turn on group selection. Objects within groups can be selected as a group only, not individually.
- At the command prompt, enter pickstyle. Enter 0 to turn off group selection. Objects within groups can be selected individually only, not as a group.
- At any time, turn group selection on and off by pressing either CTRL+H or CTRL+SHIFT+A.

  • 2

#245 quangtvxd

quangtvxd

    biết zoom

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

Đã gửi 20 August 2010 - 10:07 AM

Mình có một số lisp khá hay nhưng đã bị mã hóa anh em nào có phần mềm giải mã lisp thì chỉ giúp mình link với. Cám ơn nhé.
  • 0

#246 truongthanh

truongthanh

    biết lệnh text

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

Đã gửi 31 August 2010 - 10:03 AM

Cho mình hỏi, mình muốn thử viết 1 lisp đổi bề dày Pline mà sao mình viết hoài ko được nhờ các bạn xem dùm mình thử
thanks
(defun c:glb ()
(setq SS (ssget '((0 . "LWPOLYLINE"))))
(setq gt (getreal "\n Cho do rong moi cua POLYLINE:"))
(command ".pedit" ss "w" gt "" )
(princ)
  )
  • 0

#247 gia_bach

gia_bach

    biết lệnh adcenter

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

Đã gửi 31 August 2010 - 10:27 AM

Cho mình hỏi, mình muốn thử viết 1 lisp đổi bề dày Pline mà sao mình viết hoài ko được nhờ các bạn xem dùm mình thử
thanks
(defun c:glb ()
(setq SS (ssget '((0 . "LWPOLYLINE"))))
(setq gt (getreal "\n Cho do rong moi cua POLYLINE:"))
(command ".pedit" ss "w" gt "" )
(princ)
  )

truongthanh dùng thử LISP này (sử dụng hàm VLA-...)
(defun c:glb (/ ent gt i ss)
(vl-load-com)
(if (and
(setq ss (ssget '((0 . "LWPOLYLINE"))))
(setq gt (getdist "\n Chon do rong moi cua POLYLINE:"))
(setq i -1))
(while (setq ent (ssname ss (setq i (1+ i))))
(vla-put-ConstantWidth (vlax-ename->vla-object ent) gt)) )
(Princ))

  • 2

#248 Tue_NV

Tue_NV

    KS Võ Quang Tuệ

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

Đã gửi 31 August 2010 - 10:41 AM

Cho mình hỏi, mình muốn thử viết 1 lisp đổi bề dày Pline mà sao mình viết hoài ko được nhờ các bạn xem dùm mình thử
thanks
(defun c:glb ()
(setq SS (ssget '((0 . "LWPOLYLINE"))))
(setq gt (getreal "\n Cho do rong moi cua POLYLINE:"))
(command ".pedit" ss "w" gt "" )
(princ)
  )

Của bạn được sửa lại
(defun c:glb ()
(setq SS (ssget '((0 . "LWPOLYLINE"))))
(setq gt (getreal "\n Cho do rong moi cua POLYLINE:"))
(command ".pedit" "m" ss "" "w" gt "" )
(princ)
)

  • 2

#249 zoro107

zoro107

    biết vẽ ellipse

  • Members
  • PipPip
  • 51 Bài viết
Điểm đánh giá: 10 (tàm tạm)

Đã gửi 31 August 2010 - 11:07 AM

Lính mới yêu cầu bác Bình viết ít va đúng trọng tâm thôi. hic . Em hay đọc lóm ma bác viết tùm lum lam em đọc 1 hôi không hiêu bác muốn các gì, vài câu góp ý mong bác đừng giận..
Nhân tiện đây cám ơn bác Hoàng nhiu lắm. hiii................... học lóm của bác nhiu roài mà đến giờ mới cám ơn.... nga quá
  • 0

#250 truongthanh

truongthanh

    biết lệnh text

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

Đã gửi 31 August 2010 - 11:56 AM

Của bạn được sửa lại

(defun c:glb ()
(setq SS (ssget '((0 . "LWPOLYLINE"))))
(setq gt (getreal "\n Cho do rong moi cua POLYLINE:"))
(command ".pedit" "m" ss "" "w" gt "" )
(princ)
)

cho mình hỏi code của TUE với Bác Gia Bach khác nhau như thế nào vậy?
thanks!
  • 0

#251 TRUNGNGAMY

TRUNGNGAMY

    biết lệnh block

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

Đã gửi 04 September 2010 - 10:46 PM

Biến hệ thống nào cho biết cad đang mở bao nhiêu bv vậy các bạn
  • 0

#252 master_worse

master_worse

    biết lệnh offset

  • Advance Member
  • PipPipPip
  • 170 Bài viết
Điểm đánh giá: 87 (tàm tạm)

Đã gửi 05 September 2010 - 09:28 AM

Biến hệ thống nào cho biết cad đang mở bao nhiêu bv vậy các bạn

Biến hệ thống thì không biết, nhưng có cái này (vla-get-count (vla-get-documents(vlax-get-acad-object))).

tạo 1 list các bản vẽ dang mở
-----------------------------------------------------------------------------------------------------------

(setq doc (vla-get-documents (vlax-get-acad-object))
num (vla-get-count doc)
i -1
) ;_ end setq
(repeat num (setq i (1+ i)) (setq names (cons (vla-get-path (vla-item doc i)) names)))
(setq names (reverse names))

-----------------------------------------------------------------------------------------------------------
nếu muốn chì lấy tên file không thì sửa ...(vla-get-path ... thành ...(vla-get-name ...

Bài viết đã được chỉnh sửa nội dung bởi master_worse: 05 September 2010 - 10:29 AM

  • 2

Ngu dốt không đáng thẹn bằng thiếu ý chí học hỏi


Tri thức làm người ta khiêm tốn, ngu si làm người ta kiêu ngạo (Ngạn ngữ Anh)


#253 gia_bach

gia_bach

    biết lệnh adcenter

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

Đã gửi 15 September 2010 - 08:03 AM

1- Bạn lọc lấy DXF 10 trong data của nó là xong ngay.
2- Xin chia sẻ một chút kinh nghiệm "vọc" lisp của ssg. Không riêng gì leader, mà với bất cứ đối tượng nào, ssg có sẵn 1 "lá bùa" vẫn load thường trực:

(defun C:EG( )(setq e (car (entsel)))(textscr)(setq d (entget e)))
..............

Tương tự lá bùa của bác SSG,
LISP dxf cung cấp các giá trị của mã DXF duới dạng hộp thoại.
Hình đã gửi
(defun c:dxf (/ ent Sel DataList)
(defun Dialog_Show (lst / dxfdcl fn dxf_id)
(setq dxfdcl (vl-filename-mktemp "DXF_Val.tmp")
fn (open dxfdcl "w"))
(foreach item (list
"DXF_VALUE : dialog { label = \"DXF Value\";"
" : list_box { key = \"lstKey\"; height = 25; width = 70; tabs = 4; }"
" ok_only; }")
(princ item fn) )
(close fn)
(setq dxf_id (load_dialog dxfdcl))
(if (not (if dxfXY (new_dialog "DXF_VALUE" dxf_id "" dxfXY)(new_dialog "DXF_VALUE" dxf_id)))
(progn (prompt "\nDynamic Dialogue Extraction Failed.")(exit)))
(start_list "lstKey" 3) (mapcar 'add_list lst) (end_list)
(action_tile "accept" "(setq dxfXY (done_dialog))")
(start_dialog)
(unload_dialog dxf_id)
(vl-file-delete dxfdcl)
(princ))
;main
(if (setq Sel (entsel) ent (car sel))
(Dialog_Show
(mapcar
'(lambda (x / tempType)
(if (and
(equal (type (cdr x)) 'ENAME)
(setq tempType (cdr (assoc 0 (entget (cdr x))))))
(strcat (vl-princ-to-string (car x)) "\t\t" (vl-princ-to-string (cdr x)) " [ " tempType " ]")
(strcat (vl-princ-to-string (car x)) "\t\t" (vl-princ-to-string (cdr x)) ) ) )
(setq DataList (entget Ent '("*"))) ) ))
(princ))

  • 5

#254 ketxu

ketxu

    Copier - Paster - Editor

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

Đã gửi 19 September 2010 - 10:51 PM

Tuyệt vời,nhìn cái bảng thấy sinh động và trực quan hơn hẳn ^^
  • 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


#255 Thaistreetz

Thaistreetz

    biết lệnh adcenter

  • Advance Member
  • PipPipPipPipPipPipPip
  • 913 Bài viết
Điểm đánh giá: 513 (tốt)

Đã gửi 19 September 2010 - 11:25 PM

Tương tự lá bùa của bác SSG,
LISP dxf cung cấp các giá trị của mã DXF duới dạng hộp thoại.
Hình đã gửi

Có 2 nhuợc điểm bác ạ.
- Ta không thể copy giá trị từ hộp thoại thông báo. (cái này em rất hay dùng trong quá trình viết code)
- Với các mã DXF có giá trị hiển thị thành 1 chuỗi dài vuợt quá phạm vi chiều ngang của hộp thoại sẽ không hiển thị đuợc hết. (Cái này thuờng gặp ở các đối tuợng chứa dữ liệu mở rộng xdata, mã -3)
Em dùng thế này cho đơn giản mà tiện dụng :undecided:

(defun c:tra (/ i E LST)
(setq E (entsel) LST (entget(car E) '("*")) i 0)
(repeat (length LST)
(print (nth i LST))
(setq i (1+ i))
)
(textscr) (princ)
);end


  • 0

Hình đã gửi
IN HIM, I TRUST. THE TRUST IN MY GOD


#256 ketxu

ketxu

    Copier - Paster - Editor

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

Đã gửi 19 September 2010 - 11:38 PM

Em cũng viết 1 "lá bùa" cho mình. hehe, sai lầm chết người của em chính từ "lá bùa lởm" này :bigsmile:

Cảm ơn anh nhé :undecided:

Mình mới đọc bài này,vẫn chưa hiểu lá bùa này ...lởm ở chỗ nào :bigsmile:(
  • 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


#257 Thaistreetz

Thaistreetz

    biết lệnh adcenter

  • Advance Member
  • PipPipPipPipPipPipPip
  • 913 Bài viết
Điểm đánh giá: 513 (tốt)

Đã gửi 19 September 2010 - 11:48 PM

Mình mới đọc bài này,vẫn chưa hiểu lá bùa này ...lởm ở chỗ nào :undecided:(

bạn thử nó với 1 leader hay polyline hoặc 1 số đối tuợng fức khác sẽ hiểu
  • 0

Hình đã gửi
IN HIM, I TRUST. THE TRUST IN MY GOD


#258 ketxu

ketxu

    Copier - Paster - Editor

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

Đã gửi 20 September 2010 - 10:09 PM

À,với pl thì nó có hơi bị...dài ^^ Có phải không ạ
  • 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


#259 Thaistreetz

Thaistreetz

    biết lệnh adcenter

  • Advance Member
  • PipPipPipPipPipPipPip
  • 913 Bài viết
Điểm đánh giá: 513 (tốt)

Đã gửi 21 September 2010 - 07:44 AM

À,với pl thì nó có hơi bị...dài ^^ Có phải không ạ

Không fải :(
  • 0

Hình đã gửi
IN HIM, I TRUST. THE TRUST IN MY GOD


#260 ketxu

ketxu

    Copier - Paster - Editor

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

Đã gửi 21 September 2010 - 08:10 AM

Không fải :(

Thế thì nó..lởm ở chỗ nào ạ :( Ngố quá nên chưa hiểu ra^^
Ví dụ với 1 pl thì thấy :...

(-1 . )
(0 . "LWPOLYLINE")
(330 . )
(5 . "4C9A2")
(100 . "AcDbEntity")
(67 . 0)
(410 . "Model")
(8 . "KCVN-PLOT")
(100 . "AcDbPolyline")
(90 . 4)
(70 . 0)
(43 . 0.0)
(38 . 0.0)
(39 . 0.0)
(10 -331.23 -892.16)
(40 . 0.0)
(41 . 0.0)
(42 . 0.0)
(10 -626.941 -459.887)
(40 . 0.0)
(41 . 0.0)
(42 . 0.0)
(10 -338.443 -423.865)
(40 . 0.0)
(41 . 0.0)
(42 . 0.0)
(10 -223.044 -567.956)
(40 . 0.0)
(41 . 0.0)
(42 . 0.0)
(210 0.0 0.0 1.0)

  • 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