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

#521 duy782006

duy782006

    PHẠM QUỐC DUY

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

Đã gửi 15 December 2009 - 11:37 AM

Em thấy cái lisp này chưa ổn bác Bình ạ.
Theo em nên làm như này.
-Hỏi chọn đối tượng (1 hay 1 đống gì thì tùy). Kết thúc chọn bằng enter.
-Chọn điểm chuẩn.
-Hỏi khoảng cách. (Lưu khoảng cách)
-Chỉ hướng.
Thực hiện move các đối tượng hồi nảy đi.
-Lại hỏi chọn đối tượng (cũng như hồi nảy)
-Chọn điểm chuẩn.
-Chỉ hướng.
Thực hiệm move các đối tượng này khoảng cách hồi nãy, hướng bây giờ.
Cừ thế lặp lại.
  • 1

Cứ ngỡ trần gian là cõi thật.Cho nên tất bật đến bây giờ.
Tạo hộp thoại bằng lisp My blog QUY ĐỊNH ĐẶT TÊN TOPIC TRONG CHUYÊN MỤC LISPD http://ktsduy.wordpress.com/
Để cám ơn chỉ cần nhấn rep_up.png
(Là nhấn vào nút đó phía bài viết của người ta í chứ đừng có nhè cái hình này mà nhấn miết đi nha :-D


#522 gia_bach

gia_bach

    biết lệnh adcenter

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

Đã gửi 15 December 2009 - 02:46 PM

Em thấy cái lisp này chưa ổn bác Bình ạ.
Theo em nên làm như này.
-Hỏi chọn đối tượng (1 hay 1 đống gì thì tùy). Kết thúc chọn bằng enter.
-Chọn điểm chuẩn.
-Hỏi khoảng cách. (Lưu khoảng cách)
-Chỉ hướng.
Thực hiện move các đối tượng hồi nảy đi.
-Lại hỏi chọn đối tượng (cũng như hồi nảy)
-Chọn điểm chuẩn.
-Chỉ hướng.
Thực hiệm move các đối tượng này khoảng cách hồi nãy, hướng bây giờ.
Cừ thế lặp lại.

LISP triển khai theo ý bác duy782006
(defun c:mmo(/ ang dis pt ss)
(or *dis* (setq *dis* 200))
(or *ang* (setq *ang* 0))

(princ "\nChon doi tuong muon di chuyen :")
(while (setq ss (ssget))
(setq ang (getangle (strcat "\nNhap goc muon di chuyen <" (angtos *ang*) ">: ")))
(if ang (setq *ang* ang))

(initget 2)
(setq dis (getreal (strcat "\nNhap khoang cach <" (rtos *dis*) ">: ")))
(if dis (setq *dis* dis))

(command "move" ss "" (setq pt (getvar "lastpoint")) (polar pt *ang* *dis*))
(princ "\nChon doi tuong muon di chuyen :")
)
(princ)
)

  • 1

#523 duy782006

duy782006

    PHẠM QUỐC DUY

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

Đã gửi 15 December 2009 - 03:26 PM

Cái chổ nhập khoảng cách bác dùng getdist thì ok hơn á!
  • 1

Cứ ngỡ trần gian là cõi thật.Cho nên tất bật đến bây giờ.
Tạo hộp thoại bằng lisp My blog QUY ĐỊNH ĐẶT TÊN TOPIC TRONG CHUYÊN MỤC LISPD http://ktsduy.wordpress.com/
Để cám ơn chỉ cần nhấn rep_up.png
(Là nhấn vào nút đó phía bài viết của người ta í chứ đừng có nhè cái hình này mà nhấn miết đi nha :-D


#524 Tue_NV

Tue_NV

    KS Võ Quang Tuệ

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

Đã gửi 15 December 2009 - 03:46 PM

LISP triển khai theo ý bác duy782006

(defun c:mmo(/ ang dis pt ss)
(or *dis* (setq *dis* 200))
(or *ang* (setq *ang* 0))

(princ "\nChon doi tuong muon di chuyen :")
(while (setq ss (ssget))
(setq ang (getangle (strcat "\nNhap goc muon di chuyen <" (angtos *ang*) ">: ")))
(if ang (setq *ang* ang))

(initget 2)
(setq dis (getreal (strcat "\nNhap khoang cach <" (rtos *dis*) ">: ")))
(if dis (setq *dis* dis))

(command "move" ss "" (setq pt (getvar "lastpoint")) (polar pt *ang* *dis*))
(princ "\nChon doi tuong muon di chuyen :")
)
(princ)
)

Em thấy tốc độ của Lisp này ngang bằng với lệnh Mutiple -> Move chứ chẳng nhanh hơn là mấy. Trong khi đó, lệnh Mutiple -> Move lại có thể hiện được cả hình ảnh động và di chuyển đối tượng theo hướng của dây tóc chuột, có điều cái này không lưu được khoảng cách
Nếu Lisp thể hiện được hình được hình ảnh động và di chuyển theo phương dây tóc của chuột (khỏi cần nhập góc) thì nó mới thật sự nhanh hơn đấy anh gia_bach à.

Lisp tối ưu phải là Lisp khắc phục được nhược điểm của lệnh Mutiple -> Move (lưu lại khoảng cách cho việc sử dụng lần sau mà thôi (không có giá trị góc), thể hiện được hình ảnh động theo phương di chuyển của đối tượng
  • 1

#525 gia_bach

gia_bach

    biết lệnh adcenter

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

Đã gửi 15 December 2009 - 03:52 PM

Cái chổ nhập khoảng cách bác dùng getdist thì ok hơn á!

Bổ sung phần Highlight đối tuợng đuợc chọn và dùng getdist để nhập kh/cách.
Thanks to duy782006.

(defun c:mmo(/ ang dis pt ss)
(defun *error* (msg)
(if ss (ssredraw ss 4))
(if (not(wcmatch (strcase msg) "*BREAK,*EXIT*,*CANCEL*"))
(princ (strcat "\n** Error: " msg " **")))
(princ))
(defun ssredraw (ss mode / i ename)
(setq i -1)
(while (setq ename (ssname ss (setq i (1+ i))))
(redraw (ssname ss i) mode)
)
)

(or *dis* (setq *dis* 200))
(or *ang* (setq *ang* 0))

(princ "\nChon doi tuong muon di chuyen :")
(while (setq ss (ssget))
(ssredraw ss 3)
(setq ang (getangle (strcat "\nNhap goc muon di chuyen <" (angtos *ang*) ">: ")))
(if ang (setq *ang* ang))

(initget 2)
(setq dis (getdist (strcat "\nNhap khoang cach <" (rtos *dis*) ">: ")))
(if dis (setq *dis* dis))

(ssredraw ss 4)
(command "move" ss "" (setq pt (getvar "lastpoint")) (polar pt *ang* *dis*))
(princ "\nChon doi tuong muon di chuyen :")
)
(princ)
)

  • 1

#526 gia_bach

gia_bach

    biết lệnh adcenter

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

Đã gửi 15 December 2009 - 04:02 PM

Em thấy tốc độ của Lisp này ngang bằng với lệnh Mutiple -> Move chứ chẳng nhanh hơn là mấy. Trong khi đó, lệnh Mutiple -> Move lại có thể hiện được cả hình ảnh động và di chuyển đối tượng theo hướng của dây tóc chuột
Nếu Lisp thể hiện được hình được hình ảnh động và di chuyển theo phương dây tóc của chuột (khỏi cần nhập góc) thì nó mới thật sự nhanh hơn đấy anh gia_bach à

Mutiple -> Move : có phải là lệnh MoCoRo ?
Nếu là lệnh MoCoRo thì chức năng khác với Lisp này.(ko cần nhập lại khoảng cách. )

hàm GetAngle cho phép pick điểm hoặc nhập trực tiếp.

thể hiện được hình được hình ảnh động và di chuyển theo phương dây tóc của chuột : chắc phải nhờ hàm Expres Tools.

Cám ơn Tue_NV.
  • 0

#527 Tue_NV

Tue_NV

    KS Võ Quang Tuệ

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

Đã gửi 15 December 2009 - 04:11 PM

Mutiple -> Move : có phải là lệnh MoCoRo ?
Nếu là lệnh MoCoRo thì chức năng khác với Lisp này.(ko cần nhập lại khoảng cách. )

Dạ không,
Mutiple -> Move : là lệnh Multiple : để lặp lại lệnh Move như trong code Lisp của anh
Command: MULTIPLE -> gõ Mutiple
Enter command name to repeat: m -> gõ M (lệnh tắt của Move)
Select objects: Specify opposite corner: 46 found -> chọn đối tượng

Select objects: 500 -> kéo trỏ chuột theo hướng mà user điịnh và gõ 500 (là giá trị khoảng cách)
( thể hiện hình ảnh động của đối tượng Move)

Command: -> tự động lặp lại lệnh Move (do ta đã gõ lệnh Multiple trước đó)
M
Select objects: Specify opposite corner: 46 found -> chọn đối tượng

Select objects: -> kéo trỏ chuột theo hướng mà user điịnh và gõ 500 (là giá trị khoảng cách)
500
(thể hiện hình ảnh động của đối tượng Move)
..
...
-> Tiếp tục như vậy -> Cái này hơi dở là nhấn Esc để thoát lệnh lặp Multiple

lệnh Mutiple -> Move lại có thể hiện được cả hình ảnh động và di chuyển đối tượng theo hướng của dây tóc chuột, có điều cái này không lưu được khoảng cách
Nếu Lisp thể hiện được hình được hình ảnh động và di chuyển theo phương dây tóc của chuột (khỏi cần nhập góc) thì nó mới thật sự nhanh hơn đấy anh gia_bach à.

Lisp tối ưu phải là Lisp khắc phục được nhược điểm của lệnh Mutiple -> Move (lưu lại khoảng cách cho việc sử dụng lần sau mà thôi (không có giá trị góc), thể hiện được hình ảnh động theo phương di chuyển của đối tượng


  • 2

#528 duy782006

duy782006

    PHẠM QUỐC DUY

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

Đã gửi 15 December 2009 - 04:37 PM

( thể hiện hình ảnh động của đối tượng Move)

Ừ mình cũng ưng có ai là được việc này cho mình mót với chứ mấy cái lisp của mình toàn bị vậy. Ví dụ copy cứ chỉ điểm nào thì ảnh copy tới đó chứ không có cái hình ảnh động nhìn không ưng mắt lắm.
  • 0

Cứ ngỡ trần gian là cõi thật.Cho nên tất bật đến bây giờ.
Tạo hộp thoại bằng lisp My blog QUY ĐỊNH ĐẶT TÊN TOPIC TRONG CHUYÊN MỤC LISPD http://ktsduy.wordpress.com/
Để cám ơn chỉ cần nhấn rep_up.png
(Là nhấn vào nút đó phía bài viết của người ta í chứ đừng có nhè cái hình này mà nhấn miết đi nha :-D


#529 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 15 December 2009 - 05:28 PM

Ừ mình cũng ưng có ai là được việc này cho mình mót với chứ mấy cái lisp của mình toàn bị vậy. Ví dụ copy cứ chỉ điểm nào thì ảnh copy tới đó chứ không có cái hình ảnh động nhìn không ưng mắt lắm.

bạn có thể sử dụng các hàm:

(acet-ss-drag-move ss pt [prompt] [highlight [cursor]])

(acet-ss-drag-rotate ss pt [prompt] [highlight [cursor]])

(acet-ss-drag-scale ss pt [prompt] [highlight [cursor]])



bạn vào đây xem thêm
http://www.cadviet.c...showtopic=13492
  • 1

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)


#530 trinhvqh

trinhvqh

    biết lệnh block

  • Members
  • PipPipPipPipPipPip
  • 408 Bài viết
Điểm đánh giá: 222 (khá)

Đã gửi 15 December 2009 - 07:21 PM

Đi cả ngày về thấy cái Lisp sửa đổi Dimension của gia_bach; Test chạy OK
Thầm nghĩ: Trong cuộc sống, người ta hay thích “dài”.
Nhưng với Lisp xem ra điều đó không phù hợp.
“Ngắn” mà “hiệu quả” vẫn thích hơn, nhỉ!!! :(
Xin cảm ơn gia_bach.

Bây giờ có mấy yêu cầu cho các cao thủ “Ô tô Líp” của Diễn đàn Cadviet đây:
Ý tưởng này học tập từ chương trình SketchUp (SU)
Nói qua một chút: SketchUp là một chương trình của hãng Google; thoạt nhìn người dùng sẽ thấy nó như thứ đồ chơi (giao diện đơn giản như Photo Paint vậy)

Với cá nhân tôi, sau khi dùng SU một thời gian thấy rất cảm tình với chương trình này vì “tính người” của nó.
Trở lại nhìn Autodesk thấy rắc rối và mang nặng tính kỹ thuật
Do vậy, để góp phần làm Autocad “lãng mạn” hơn, tôi nảy sinh ý định nhờ các cao thủ Cadviet hãy góp phần hoàn thiện nó. Ban đầu hãy thử hoàn thiện các lệnh 2D sau”

01. Lệnh Divide:
- Chọn đối tượng cần Divide (Line; Arc; Polyline,..)
- Đưa chuột dọc theo đối tượng thì trên màn hình sẽ xuất hiện 2 thông tin tương ứng (số điểm chia và giá trị khoảng cách)
- Khi đến vị trí ưng ý, người dùng sẽ bấm enter hoặc kích chuột

02. Lệnh Move, Copy
- Gọi tên lệnh (thực hiện lệnh Move, nếu kích Ctrl sẽ thành lệnh Copy; Ctrl lần nữa thành lệnh Move)
- Chọn Basepoint
- Chọn điểm tiếp theo (second point)
Đối với lệnh copy
- Nếu bấm “*integer” hoặc “integer*” thì copy mutiple với khoảng cách từ basepoint đến second point
- Nếu nhập “/integer” hoặc “integer/” thì chia khoảng cách từ basepoint đến second point theo giá trị integer.
- Escape để thoát lệnh ở bất cứ bước nào.

03. Lệnh Rotate; Array Polar
- Tương tự như vậy cho lệnh Rotate và Array Polar (điều khiển thay đổi bằng phím Ctrl)
- Nhập “*integer”; “/integer” để thực hiện array
- Escape để thoát lệnh ở bất cứ bước nào.

Xin mời các cao thủ lập trình hãy xem video để hiểu hơn về ý tưởng tôi muốn trình bày
Thay mặt cho các Fan, chúc sức khỏe và hy vọng “sản phẩm” sớm ra lò

http://www.cadviet.c...pfiles/2/su.rar
  • 0

#531 Tue_NV

Tue_NV

    KS Võ Quang Tuệ

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

Đã gửi 16 December 2009 - 09:04 AM

bạn có thể sử dụng các hàm:

(acet-ss-drag-move ss pt [prompt] [highlight [cursor]])

(acet-ss-drag-rotate ss pt [prompt] [highlight [cursor]])

(acet-ss-drag-scale ss pt [prompt] [highlight [cursor]])



bạn vào đây xem thêm
http://www.cadviet.c...showtopic=13492

Chào bạn 'master_worse'
Với hàm (acet-ss-drag-move ss pt [prompt] [highlight [cursor]]) thì Tue_NV đã được bác Thiep giới thiệu qua đường Link mà bạn đã post. Cám ơn bác Thiep

lệnh Mutiple -> Move lại có thể hiện được cả hình ảnh động và di chuyển đối tượng theo hướng của dây tóc chuột với khoảng cách do user nhập vào.

hàm (acet-ss-drag-move ss pt [prompt] [highlight [cursor]]) thì không làm được điều đó
  • 0

#532 gia_bach

gia_bach

    biết lệnh adcenter

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

Đã gửi 16 December 2009 - 10:02 AM

Chào bạn 'master_worse'
Với hàm (acet-ss-drag-move ss pt [prompt] [highlight [cursor]]) thì Tue_NV đã được bác Thiep giới thiệu qua đường Link mà bạn đã post. Cám ơn bác Thiep

lệnh Mutiple -> Move lại có thể hiện được cả hình ảnh động và di chuyển đối tượng theo hướng của dây tóc chuột với khoảng cách do user nhập vào.

hàm (acet-ss-drag-move ss pt [prompt] [highlight [cursor]]) thì không làm được điều đó

Hạn chế của lệnh MULTIPLE : You cannot use MULTIPLE as an argument to the AutoLISP® command function.

- yêu cầu "move đối tượng theo phương khác cũng với cùng khoảng cách"
Trong yêu cầu này khi sử dụng hàm ACET-SS-DRAG-MOVE vấn đề phát sinh là chặn di chuyển đối tượng theo hướng của dây tóc chuột trong phạm vi bán kính = khoảng cách
(defun c:mmo(/ ang dis pt ss)
(defun *error* (msg)
(if ss (ssredraw ss 4))
(if (not(wcmatch (strcase msg) "*BREAK,*EXIT*,*CANCEL*"))
(princ (strcat "\n** Error: " msg " **")))
(princ))
(defun ssredraw (ss mode / i ename)
(setq i -1)
(while (setq ename (ssname ss (setq i (1+ i))))
(redraw (ssname ss i) mode)
)
)

(or *dis* (setq *dis* 200))
(or *ang* (setq *ang* 0))
(initget 2)
(setq dis (getdist (strcat "\nNhap khoang cach <" (rtos *dis*) ">: ")))
(if dis (setq *dis* dis))

(princ "\nChon doi tuong muon di chuyen :")
(while (setq ss (ssget))
(ssredraw ss 3)
(setq p1 (getpoint "\nDiem goc : "))
(setq p2 (ACET-SS-DRAG-MOVE ss p1 "\nDiem ke :"))
(setq goc (angle p1 p2)
p2 (polar p1 goc *dis*) )
(ssredraw ss 4)
(command "move" ss "" p1 p2)
(princ "\nChon doi tuong muon di chuyen :")
)
(princ)
)


Một cách xử lý khác (lại bị bắt điểm)
(defun c:mmo(/ ang dis pt ss)
(defun *error* (msg)
(if ss (ssredraw ss 4))
(if (not(wcmatch (strcase msg) "*BREAK,*EXIT*,*CANCEL*"))
(princ (strcat "\n** Error: " msg " **")))
(princ))
(defun ssredraw (ss mode / i ename)
(setq i -1)
(while (setq ename (ssname ss (setq i (1+ i))))
(redraw (ssname ss i) mode)
)
)

(or *dis* (setq *dis* 1000))
(or *ang* (setq *ang* 0))
(initget 2)
(setq dis (getdist (strcat "\nNhap khoang cach <" (rtos *dis*) ">: ")))
(if dis (setq *dis* dis))

(princ "\nChon doi tuong muon di chuyen :")
(while (setq ss (ssget))
(ssredraw ss 3)
(setq p1 (getpoint "\nDiem goc : ")
rec (boundarySS ss)
ll (car rec)
ur (cadr rec)
a (- (car ur)(car ll))
b (- (cadr ur)(cadr ll)))
;(grdrawRec ll a b 8)
(princ "\nDiem ke :")
(while (and (setq input (grread t 4 4)) (= (car input) 5))
(setq p2 (cadr input)
goc (angle p1 p2)
pt (polar ll goc *dis*) )
(grdrawRec pt a b 3)
)
(redraw)
(ssredraw ss 4)
(command "move" ss "" ll pt)
(princ "\nChon doi tuong muon di chuyen :")
)
(princ)
)

(defun boundarySS (ss / all_max all_min ll maxpt minpt ur)
(foreach e (mapcar 'vlax-ename->vla-object (vl-remove-if 'listp (mapcar 'cadr (ssnamex ss))))
(vla-GetBoundingBox e 'minpt 'maxpt)
(setq all_min (cons (vlax-safearray->list minpt) all_min)
all_max (cons (vlax-safearray->list maxpt) all_max) )
) ;_ end_foreach
(setq ll (list (car (vl-sort (mapcar 'car all_min) '<))
(car (vl-sort (mapcar 'cadr all_min) '<))
) ;_ end_list
ur (list (last (vl-sort (mapcar 'car all_max) '<))
(last (vl-sort (mapcar 'cadr all_max) '<))
) ;_ end_list
) ;_ end_setq
(list ll ur )
)

(defun grdrawRec (p1 a b col / p2 p3 p4)
(redraw)
(setq p2 (polar p1 0 a)
p3 (polar p2 (/ pi 2) b )
p4 (polar p1 (/ pi 2) b ))
(grdraw p1 p2 col 1 )
(grdraw p2 p3 col 1 )
(grdraw p1 p4 col 1 )
(grdraw p4 p3 col 1 )
)

  • 2

#533 tieu_ngu_nhi_43

tieu_ngu_nhi_43

    biết zoom

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

Đã gửi 16 December 2009 - 10:39 AM

Bổ sung phần Highlight đối tuợng đuợc chọn và dùng getdist để nhập kh/cách.
Thanks to duy782006.

(defun c:mmo(/ ang dis pt ss)
(defun *error* (msg)
(if ss (ssredraw ss 4))
(if (not(wcmatch (strcase msg) "*BREAK,*EXIT*,*CANCEL*"))
(princ (strcat "\n** Error: " msg " **")))
(princ))
(defun ssredraw (ss mode / i ename)
(setq i -1)
(while (setq ename (ssname ss (setq i (1+ i))))
(redraw (ssname ss i) mode)
)
)

(or *dis* (setq *dis* 200))
(or *ang* (setq *ang* 0))

(princ "\nChon doi tuong muon di chuyen :")
(while (setq ss (ssget))
(ssredraw ss 3)
(setq ang (getangle (strcat "\nNhap goc muon di chuyen <" (angtos *ang*) ">: ")))
(if ang (setq *ang* ang))

(initget 2)
(setq dis (getdist (strcat "\nNhap khoang cach <" (rtos *dis*) ">: ")))
(if dis (setq *dis* dis))

(ssredraw ss 4)
(command "move" ss "" (setq pt (getvar "lastpoint")) (polar pt *ang* *dis*))
(princ "\nChon doi tuong muon di chuyen :")
)
(princ)
)


Thanks bác Gia Bach rất là nhiều!!!!
Cái lisp này rất là đúngvơui ý của em.
Lisp này có thể bỏ không cần câu lệnh nhập góc cần di chuyển ko vậy bác.
Nhân tiện bác có thể viết thêm lisp như trên nhưng với lệnh copy ko ạ?
Cũng như lệnh offset đó. Không cần phải nhập lại khoảng cách.
Cảm ơn bác lần nữa. Chúc bác sức khỏe!!!
  • 0

#534 duy782006

duy782006

    PHẠM QUỐC DUY

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

Đã gửi 16 December 2009 - 10:44 AM

Lisp này có thể bỏ không cần câu lệnh nhập góc cần di chuyển ko vậy bác.

-Lưu ý với bạn là nhập góc này có thể bằng clik chuột nhé.
-Nếu không nhập góc thì nó di chuyển theo phương nào bạn?
  • 0

Cứ ngỡ trần gian là cõi thật.Cho nên tất bật đến bây giờ.
Tạo hộp thoại bằng lisp My blog QUY ĐỊNH ĐẶT TÊN TOPIC TRONG CHUYÊN MỤC LISPD http://ktsduy.wordpress.com/
Để cám ơn chỉ cần nhấn rep_up.png
(Là nhấn vào nút đó phía bài viết của người ta í chứ đừng có nhè cái hình này mà nhấn miết đi nha :-D


#535 trinhvqh

trinhvqh

    biết lệnh block

  • Members
  • PipPipPipPipPipPip
  • 408 Bài viết
Điểm đánh giá: 222 (khá)

Đã gửi 16 December 2009 - 03:29 PM

Bây giờ có mấy yêu cầu cho các cao thủ “Ô tô Líp” của Diễn đàn Cadviet đây:
Ý tưởng này học tập từ chương trình SketchUp (SU)
Nói qua một chút: SketchUp là một chương trình của hãng Google; thoạt nhìn người dùng sẽ thấy nó như thứ đồ chơi (giao diện đơn giản như Photo Paint vậy)

Với cá nhân tôi, sau khi dùng SU một thời gian thấy rất cảm tình với chương trình này vì “tính người” của nó.
Trở lại nhìn Autodesk thấy rắc rối và mang nặng tính kỹ thuật
Do vậy, để góp phần làm Autocad “lãng mạn” hơn, tôi nảy sinh ý định nhờ các cao thủ Cadviet hãy góp phần hoàn thiện nó. Ban đầu hãy thử hoàn thiện các lệnh 2D sau”

01. Lệnh Divide:
- Chọn đối tượng cần Divide (Line; Arc; Polyline,..)
- Đưa chuột dọc theo đối tượng thì trên màn hình sẽ xuất hiện 2 thông tin tương ứng (số điểm chia và giá trị khoảng cách)
- Khi đến vị trí ưng ý, người dùng sẽ bấm enter hoặc kích chuột

02. Lệnh Move, Copy
- Gọi tên lệnh (thực hiện lệnh Move, nếu kích Ctrl sẽ thành lệnh Copy; Ctrl lần nữa thành lệnh Move)
- Chọn Basepoint
- Chọn điểm tiếp theo (second point)
Đối với lệnh copy
- Nếu bấm “*integer” hoặc “integer*” thì copy mutiple với khoảng cách từ basepoint đến second point
- Nếu nhập “/integer” hoặc “integer/” thì chia khoảng cách từ basepoint đến second point theo giá trị integer.
- Escape để thoát lệnh ở bất cứ bước nào.

03. Lệnh Rotate; Array Polar
- Tương tự như vậy cho lệnh Rotate và Array Polar (điều khiển thay đổi bằng phím Ctrl)
- Nhập “*integer”; “/integer” để thực hiện array
- Escape để thoát lệnh ở bất cứ bước nào.

Xin mời các cao thủ lập trình hãy xem video để hiểu hơn về ý tưởng tôi muốn trình bày
Thay mặt cho các Fan, chúc sức khỏe và hy vọng “sản phẩm” sớm ra lò

http://www.cadviet.c...pfiles/2/su.rar


Trong khi chờ đợi các cao thủ nghiên cứu dự án “Đơn giản hoá các lệnh 2D của Autocad theo tinh thần SketchUp”.
Tôi có thêm một yêu cầu nhỏ mong được sự giúp đỡ của Cộng đồng

Tiếp theo các lệnh về Dim là các Lênh về Text. Nhằm quản lý Layer thống nhất trong bản vẽ. Tôi muốn cải biên các lệnh về Text cho Autocad như Lisp đính kèm. (Đã Test thử nhưng nó vẫn không chạy ổn. Xin mời các cao thủ hãy kiểm tra và hiểu chỉnh giúp tôi.
Xin cảm ơn!!!

01. Lệnh Dtext
Bổ sung thêm trường hợp bản vẽ hiện hành không có Layer KT-Text thì tạo mới cho nó

02. Lệnh Mtext
Sửa theo cú pháp của gia_bach thì nó đơ màn hình

03. Copy Dtext thành nhiều hàng
Bổ sung trường hợp nếu Text được chọn không ở lớp KT-Text thì chuyển nó về đúng Layer và thực hiện lệnh copy
http://www.cadviet.c...es/2/02text.lsp
  • 0

#536 Zuy782006

Zuy782006

    biết vẽ line

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

Đã gửi 16 December 2009 - 03:44 PM

Trong khi chờ đợi các cao thủ nghiên cứu dự án “Đơn giản hoá các lệnh 2D của Autocad theo tinh thần SketchUp”.
Tôi có thêm một yêu cầu nhỏ mong được sự giúp đỡ của Cộng đồng

Tiếp theo các lệnh về Dim là các Lênh về Text. Nhằm quản lý Layer thống nhất trong bản vẽ. Tôi muốn cải biên các lệnh về Text cho Autocad như Lisp đính kèm. (Đã Test thử nhưng nó vẫn không chạy ổn. Xin mời các cao thủ hãy kiểm tra và hiểu chỉnh giúp tôi.
Xin cảm ơn!!!

01. Lệnh Dtext
Bổ sung thêm trường hợp bản vẽ hiện hành không có Layer KT-Text thì tạo mới cho nó

02. Lệnh Mtext
Sửa theo cú pháp của gia_bach thì nó đơ màn hình

03. Copy Dtext thành nhiều hàng
Bổ sung trường hợp nếu Text được chọn không ở lớp KT-Text thì chuyển nó về đúng Layer và thực hiện lệnh copy
http://www.cadviet.c...es/2/02text.lsp

Mình đề xuất hướng giải quyết 1 cách gọn nhẹ như này:
Viết 1 lisp khi gỏ lệnh xong thì làm các việc sau:
-Chuyển tất cả text về layer "la-text" color "bylayer"
-Chuyển tất cả mtext về layer "la-mtext" color "bylayer"
-Chuyển tất cả dim về layer "la-dim" color "bylayer"
-Chuyển tất cả hatch về layer "la-hatch" color "bylayer"
*Tất cả các layer này nếu chưa có sẽ tạo ra.

Như vậy trước khi xuất bản vẽ bạn gỏ lệnh 1 phát và uống trà.
  • 0
Ơ hay, tại sao ta sống chốn này?
Quay cuồng mãi, vậy có gì vui !!!

#537 trinhvqh

trinhvqh

    biết lệnh block

  • Members
  • PipPipPipPipPipPip
  • 408 Bài viết
Điểm đánh giá: 222 (khá)

Đã gửi 16 December 2009 - 03:50 PM

Mình đề xuất hướng giải quyết 1 cách gọn nhẹ như này:
Viết 1 lisp khi gỏ lệnh xong thì làm các việc sau:
-Chuyển tất cả text về layer "la-text" color "bylayer"
-Chuyển tất cả mtext về layer "la-mtext" color "bylayer"
-Chuyển tất cả dim về layer "la-dim" color "bylayer"
-Chuyển tất cả hatch về layer "la-hatch" color "bylayer"
*Tất cả các layer này nếu chưa có sẽ tạo ra.

Như vậy trước khi xuất bản vẽ bạn gỏ lệnh 1 phát và uống trà.

Một ý tưởng hay để hiệu chỉnh bản vẽ nhưng việc này không đồng nghĩa với lời đề nghị
Có lẽ nên viết cả hai để can thiệp đối tượng ngay từ khi khởi tạo hoặc giúp sắp xếp lại đối tượng đã tạo rồi một cách có hệ thống
“Phòng bệnh và chữa bệnh” cái nào cũng cần thiết cả
  • 0

#538 Zuy782006

Zuy782006

    biết vẽ line

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

Đã gửi 16 December 2009 - 03:57 PM

Một ý tưởng hay để hiệu chỉnh bản vẽ nhưng việc này không đồng nghĩa với lời đề nghị
Có lẽ nên viết cả hai để can thiệp đối tượng ngay từ khi khởi tạo hoặc giúp sắp xếp lại đối tượng đã tạo rồi một cách có hệ thống
“Phòng bệnh và chữa bệnh” cái nào cũng cần thiết cả

"Bất kể mèo trắng hay mèo đen, bắt được chuột chính là mèo tốt" Kết quả là bản vẽ đâu ra đó thì là ok.
  • 0
Ơ hay, tại sao ta sống chốn này?
Quay cuồng mãi, vậy có gì vui !!!

#539 tnmtpc

tnmtpc

    biết dimcontinue

  • Members
  • PipPipPipPipPip
  • 370 Bài viết
Điểm đánh giá: 206 (khá)

Đã gửi 16 December 2009 - 04:07 PM

Mình có một lisp tạo đường gạch dưới text, khi pick vào text thì text sẽ có đường gạch dưới text, nhưng phải pick từng text một, trong bản vẽ của mình có tới hàng ngàn text, không lẽ ngồi pick hàng ngàn cái :( Nhờ các bạn viết cho cái lisp chỉ cần kéo chuột một phát là OK. Mong các bạn giúp mình , cám ơn nhiều lắm
  • 0

#540 Zuy782006

Zuy782006

    biết vẽ line

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

Đã gửi 16 December 2009 - 04:20 PM

Mình có một lisp tạo đường gạch dưới text, khi pick vào text thì text sẽ có đường gạch dưới text, nhưng phải pick từng text một, trong bản vẽ của mình có tới hàng ngàn text, không lẽ ngồi pick hàng ngàn cái :( Nhờ các bạn viết cho cái lisp chỉ cần kéo chuột một phát là OK. Mong các bạn giúp mình , cám ơn nhiều lắm

Cái gạch dưới này là đối tượng line hay là %%U?
  • 0
Ơ hay, tại sao ta sống chốn này?
Quay cuồng mãi, vậy có gì vui !!!