Chuyển đến nội dung
Diễn đàn CADViet
Đăng nhập để thực hiện theo  
hugo007

[Yêu cầu] Lisp vẽ đai móc

Các bài được khuyến nghị

Bài trước bị xóa vì bạn vi phạm nội quy. Mình nghi rằng bài này cũng tiếp tục mất thôi :)

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác

Này thì yêu cầu của Hugo :)

Lệnh : moc

(defun c:moc ()
 (entmake '(
(0 . "LWPOLYLINE") 
(100 . "AcDbEntity") 
(67 . 0) 
(8 . "0")
(100 . "AcDbPolyline") 
(90 . 5) 
(70 . 0) 
(43 . 0.0) 
(38 . 0.0) 
(39 . 0.0) 
(10 20.06813351996104 4.918288816158338)
(40 . 0.0) (41 . 0.0) (42 . 0.0) 
(10 -4.515341367645868 96.66506612330090) 
(40 . 0.0) 
(41 . 0.0)
(42 . 0.0) 
(10 196.7878331603434 96.66506612330090)
(40 . 0.0)
(41 . 0.0) 
(42 . -0.955352130863200)
(10 195.4199538710784 66.72756612330090)
(40 . 0.0) 
(41 . 0.0) 
(42 . 0.0)
(10 165.4199538710784 66.72756612330090) 
(40 . 0.0) 
(41 . 0.0) 
(42 . 0.0)))
 (princ)
)

  • Vote tăng 1

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác

Này thì yêu cầu của Hugo :)

Lệnh : moc

(defun c:moc ()
 (entmake '(
(0 . "LWPOLYLINE") 
(100 . "AcDbEntity") 
(67 . 0) 
(8 . "0")
(100 . "AcDbPolyline") 
(90 . 5) 
(70 . 0) 
(43 . 0.0) 
(38 . 0.0) 
(39 . 0.0) 
(10 20.06813351996104 4.918288816158338)
(40 . 0.0) (41 . 0.0) (42 . 0.0) 
(10 -4.515341367645868 96.66506612330090) 
(40 . 0.0) 
(41 . 0.0)
(42 . 0.0) 
(10 196.7878331603434 96.66506612330090)
(40 . 0.0)
(41 . 0.0) 
(42 . -0.955352130863200)
(10 195.4199538710784 66.72756612330090)
(40 . 0.0) 
(41 . 0.0) 
(42 . 0.0)
(10 165.4199538710784 66.72756612330090) 
(40 . 0.0) 
(41 . 0.0) 
(42 . 0.0)))
 (princ)
)

Xin lỗi bạn,phiền bạn làm cho hình này scale lên 5 lần giùm với vì bạn viết bằng cách này mình không hiểu để sửa và bạn thêm giùm mình chọn điểm chèn và chỗ góc 75 độ bo góc có bán kính 75 luôn nha,nếu muốn gán cho nó là layer DAI MOC thì làm như thế nào?.Thanks.

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác

Để scale mà không thay đổi các thứ, mình bắt buộc đóng block. Nếu bạn muốn nó to ngay từ đầu thì hãy dùng lệnh Ctrl C , Ctrl V cho nhanh :)

(defun c:moc ()
(if (not (tblsearch "layer" "daimoc"))
 (command "-LAYER" "m" "daimoc" "c" 1 "daimoc" "" )
 (setvar "clayer" "daimoc" )
)
(setq ss
(ssadd
 (entmakex '(
(0 . "LWPOLYLINE") 
(100 . "AcDbEntity") 
(67 . 0) 
(8 . "0") 
(100 . "AcDbPolyline") 
(90 . 5)
(70 . 0) 
(43 . 0.0) 
(38 . 0.0)
(39 . 0.0) 
(10 24.64817964888254 -91.74677730714256) 
(40 . 0.0) 
(41 . 0.0) 
(42 . 0.0)
(10 0.064704761275634 0.0)
(40 . 0.0) (41 . 0.0) (42 . 0.0)
(10 201.3678792892649 0.0) 
(40 . 0.0) (41 . 0.0) 
(42 . -0.955352130863200) 
(10 200.0000000000000 -29.93750000000000) 
(40 . 0.0) (41 . 0.0) (42 . 0.0) 
(10 170.0000000000000 -29.93750000000000) 
(40 . 0.0) (41 . 0.0) (42 . 0.0))
)
(ssadd)
)
ss 
(ssadd
  (entmakex '(
(0 . "DIMENSION") (100 . "AcDbEntity")
(67 . 0) (8 . "0") (100 . "AcDbDimension")
(10 0.060370364143068 0.016176190318916 0.0) 
(11 36.41853992802232 -27.89527883998339 0.0)
(12 0.0 0.0 0.0) (70 . 34) (1 . "") (71 . 5) (72 . 1)
(41 . 1.0) (42 . 1.308996938995746) (73 . 0) (74 . 0)
(75 . 0) (52 . 0.0) (53 . 0.0) (54 . 0.0) (51 . 0.0)
(3 . "Standard") (100 . "AcDb2LineAngularDimension")
(13 0.0 0.0 0.0) (14 200.0000000000000 0.0 0.0) 
(15 24.64817964888254 -91.74677730714256 0.0) 
(16 29.51916549524492 -35.10245939763303 0.0)
(40 . 0.0) (50 . 0.0))
)
  ss)
  blkName "#caiblocknaytenphaidai"
 )
 (if (not (tblsearch "block" blkName))
(progn (command "-block" blkName '(0 0 0) (eval ss) ""))
)
(while (setq pt (getpoint "\n\U+0110i\U+1EC3m ch\U+00E8n :"))
(command "-insert" blkName "s" 5 pt "")  
 (princ)
)
(command ".erase" ss "")
) 

  • Vote tăng 1

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác

Để scale mà không thay đổi các thứ, mình bắt buộc đóng block. Nếu bạn muốn nó to ngay từ đầu thì hãy dùng lệnh Ctrl C , Ctrl V cho nhanh :)

(defun c:moc ()
(if (not (tblsearch "layer" "daimoc"))
 (command "-LAYER" "m" "daimoc" "c" 1 "daimoc" "" )
 (setvar "clayer" "daimoc" )
)
(setq ss
(ssadd
 (entmakex '(
(0 . "LWPOLYLINE") 
(100 . "AcDbEntity") 
(67 . 0) 
(8 . "0") 
(100 . "AcDbPolyline") 
(90 . 5)
(70 . 0) 
(43 . 0.0) 
(38 . 0.0)
(39 . 0.0) 
(10 24.64817964888254 -91.74677730714256) 
(40 . 0.0) 
(41 . 0.0) 
(42 . 0.0)
(10 0.064704761275634 0.0)
(40 . 0.0) (41 . 0.0) (42 . 0.0)
(10 201.3678792892649 0.0) 
(40 . 0.0) (41 . 0.0) 
(42 . -0.955352130863200) 
(10 200.0000000000000 -29.93750000000000) 
(40 . 0.0) (41 . 0.0) (42 . 0.0) 
(10 170.0000000000000 -29.93750000000000) 
(40 . 0.0) (41 . 0.0) (42 . 0.0))
)
(ssadd)
)
ss 
(ssadd
  (entmakex '(
(0 . "DIMENSION") (100 . "AcDbEntity")
(67 . 0) (8 . "0") (100 . "AcDbDimension")
(10 0.060370364143068 0.016176190318916 0.0) 
(11 36.41853992802232 -27.89527883998339 0.0)
(12 0.0 0.0 0.0) (70 . 34) (1 . "") (71 . 5) (72 . 1)
(41 . 1.0) (42 . 1.308996938995746) (73 . 0) (74 . 0)
(75 . 0) (52 . 0.0) (53 . 0.0) (54 . 0.0) (51 . 0.0)
(3 . "Standard") (100 . "AcDb2LineAngularDimension")
(13 0.0 0.0 0.0) (14 200.0000000000000 0.0 0.0) 
(15 24.64817964888254 -91.74677730714256 0.0) 
(16 29.51916549524492 -35.10245939763303 0.0)
(40 . 0.0) (50 . 0.0))
)
  ss)
  blkName "#caiblocknaytenphaidai"
 )
 (if (not (tblsearch "block" blkName))
(progn (command "-block" blkName '(0 0 0) (eval ss) ""))
)
(while (setq pt (getpoint "\n\U+0110i\U+1EC3m ch\U+00E8n :"))
(command "-insert" blkName "s" 5 pt "")  
 (princ)
)
(command ".erase" ss "")
) 

Bạn kiểm tra lại giùm nó vẫn chưa gán cho đai móc này thành layer daimoc và vẫn chưa cho nhập điểm chền.Mặc dù trong lisp bạn đã có 2 mục này.Mình muốn tất cả đai này lớn hơn 5 lần để thể hiện nó đang ở tỉ lệ 1/20 không cần phải block đâu bạn,thí dụ đường xiên trong lisp dài 95 giờ mình muốn nó dài 475.....Nếu làm vậy khó thì bạn xem lại giùm mình gán layer cho nó và điểm chèn là được,có gì mình dùng lệnh scale nó lên sau.Cảm ơn sự nhiệt tình của bạn rất nhiều.

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác

Vậy thì thế này vậy :


;; Revision :08/01/2011 @18:45
(defun c:moc ()
(if (not (tblsearch "layer" "daimoc"))
 (command "-LAYER" "m" "daimoc" "c" 1 "daimoc" "" )
 (setvar "clayer" "daimoc" )
)
(setq ss
(ssadd
 (entmakex '(
(0 . "LWPOLYLINE") (100 . "AcDbEntity")
(67 . 0) (8 . "daimoc") (100 . "AcDbPolyline") 
(90 . 5) (70 . 0) (43 . 0.0) (38 . 0.0) (39 . 0.0) 
(10 122.9820791993101 -458.7338865357128) 
(40 . 0.0) (41 . 0.0) (42 . 0.0)
(10 0.064704761275626 0.0)
(40 . 0.0) (41 . 0.0) (42 . 0.0)
(10 1006.580577401222 0.0) 
(40 . 0.0) (41 . 0.0)
(42 . -0.955352130863200) 
(10 999.7411809548973 -149.6875000000000)
(40 . 0.0) (41 . 0.0) (42 . 0.0) 
(10 849.7411809548973 -149.6875000000000) 
(40 . 0.0) (41 . 0.0) (42 . 0.0)))
(ssadd)
)
ss 
(ssadd
  (entmakex '(
  (0 . "DIMENSION") (100 . "AcDbEntity")
  (67 . 0) (8 . "daimoc") (100 . "AcDbDimension")
  (10 0.043032775612801 0.080880951594580 0.0) 
  (11 181.8338805950091 -139.4763941999169 0.0) 
  (12 0.0 0.0 0.0) (70 . 34) (1 . "") (71 . 5) 
  (72 . 1) (41 . 1.0) (42 . 1.308996938995746)
  (73 . 0) (74 . 0) (75 . 0) (52 . 0.0) (53 . 0.0) 
  (54 . 0.0) (51 . 0.0)
  (3 . "Standard") (100 . "AcDb2LineAngularDimension") 
  (13 -0.258819045102541 0.0 0.0) 
  (14 999.7411809548973 0.0 0.0) 
  (15 122.9820791993101 -458.7338865357128 0.0) 
  (16 147.3370084311220 -175.5122969881651 0.0) 
  (40 . 0.0) (50 . 0.0)))
  ss)
  blkName "#caiblocknaytenphaidai"
 )
 (if (not (tblsearch "block" blkName))
(progn (command "-block" blkName '(0 0 0) (eval ss) ""))
)
(while (setq pt (getpoint "\n\U+0110i\U+1EC3m ch\U+00E8n :"))
(command "-insert" blkName "s" 5 pt "")
(command  "._explode" (entlast))  
)
(command ".erase" ss "")
(princ)
) ; end eMaker

  • Vote tăng 1

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác

Srr bạn, mình có phần kém thông minh nên không thông ý đồ của bạn được. Chọn điểm chèn là làm cái j đây nhỉ :excl:

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác

Srr bạn, mình có phần kém thông minh nên không thông ý đồ của bạn được. Chọn điểm chèn là làm cái j đây nhỉ :excl:

Là khi mình click chuột ở đâu là cái đai móc đó nằm ngay điểm mình click,trong lisp của bạn cũng thấy dòng Chọn điểm chèn: Hình như nó không có tác dụng.Hiện tại khi đánh lệnh moc thì cái đai nó nằm ở vị trí nào trên màn hình vậy bạn?Mong bạn xem giúp.

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác

Tất nhiên là nó ở cái điểm bạn kích rồi :blink:

Hay nhỉ :) Bạn vui lòng quay thao tác của bạn lại giúp mình được không ? Hoặc ấn F2 và chụp lại hộ mình.

 

Và trả lời giùm mình câu hỏi này :

2 câu trước :

 

Bạn kiểm tra lại giùm nó vẫn chưa gán cho đai móc này thành layer daimoc và vẫn chưa cho nhập điểm chền.Mặc dù trong lisp bạn đã có 2 mục này.Mình muốn tất cả đai này lớn hơn 5 lần để thể hiện nó đang ở tỉ lệ 1/20 không cần phải block đâu bạn,thí dụ đường xiên trong lisp dài 95 giờ mình muốn nó dài 475.....Nếu làm vậy khó thì bạn xem lại giùm mình gán layer cho nó và điểm chèn là được,có gì mình dùng lệnh scale nó lên sau.Cảm ơn sự nhiệt tình của bạn rất nhiều.

 

 

2 vấn đề đã đưọc rồi nhưng bạn xem lại giùm sao vẫn chưa cho chọn điểm chèn.Thanks.

 

 

 

Và câu sau :

 

Là khi mình click chuột ở đâu là cái đai móc đó nằm ngay điểm mình click,trong lisp của bạn cũng thấy dòng Chọn điểm chèn: Hình như nó không có tác dụng.Hiện tại khi đánh lệnh moc thì cái đai nó nằm ở vị trí nào trên màn hình vậy bạn?Mong bạn xem giúp.

 

2 cái đỏ đã có sao lại có cái xanh nhỉ ??? Bạn làm cách nào để check nếu không nhìn thấy nó ??????

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác

Bạn kiểm tra lại giùm nó vẫn chưa gán cho đai móc này thành layer daimoc và vẫn chưa cho nhập điểm chền.Mặc dù trong lisp bạn đã có 2 mục này.Mình muốn tất cả đai này lớn hơn 5 lần để thể hiện nó đang ở tỉ lệ 1/20 không cần phải block đâu bạn,thí dụ đường xiên trong lisp dài 95 giờ mình muốn nó dài 475.....Nếu làm vậy khó thì bạn xem lại giùm mình gán layer cho nó và điểm chèn là được,có gì mình dùng lệnh scale nó lên sau.Cảm ơn sự nhiệt tình của bạn rất nhiều.

Hề hề hề,

Cái lisp này của bác ketxu hình như bị lỗi ở hàm :

(entmakex '(

(0 . "DIMENSION") (100 . "AcDbEntity")

(67 . 0) (8 . "0") (100 . "AcDbDimension")

(10 0.060370364143068 0.016176190318916 0.0)

(11 36.41853992802232 -27.89527883998339 0.0)

(12 0.0 0.0 0.0) (70 . 34) (1 . "") (71 . 5) (72 . 1)

(41 . 1.0) (42 . 1.308996938995746) (73 . 0) (74 . 0)

(75 . 0) (52 . 0.0) (53 . 0.0) (54 . 0.0) (51 . 0.0)

(3 . "Standard") (100 . "AcDb2LineAngularDimension")

(13 0.0 0.0 0.0) (14 200.0000000000000 0.0 0.0)

(15 24.64817964888254 -91.74677730714256 0.0)

(16 29.51916549524492 -35.10245939763303 0.0)

(40 . 0.0) (50 . 0.0))

)

Nó luôn trả về nil tức là hổng tạo được đối tượng.

Do vậy hàm

(setq ss

(ssadd

(entmakex '(

(0 . "DIMENSION") (100 . "AcDbEntity")

(67 . 0) (8 . "0") (100 . "AcDbDimension")

(10 0.060370364143068 0.016176190318916 0.0)

(11 36.41853992802232 -27.89527883998339 0.0)

(12 0.0 0.0 0.0) (70 . 34) (1 . "") (71 . 5) (72 . 1)

(41 . 1.0) (42 . 1.308996938995746) (73 . 0) (74 . 0)

(75 . 0) (52 . 0.0) (53 . 0.0) (54 . 0.0) (51 . 0.0)

(3 . "Standard") (100 . "AcDb2LineAngularDimension")

(13 0.0 0.0 0.0) (14 200.0000000000000 0.0 0.0)

(15 24.64817964888254 -91.74677730714256 0.0)

(16 29.51916549524492 -35.10245939763303 0.0)

(40 . 0.0) (50 . 0.0))

)

ss))

luôn bị báo là: ; error: bad argument type: lentityp nil

Và do vậy lisp sẽ dừng lại không chạy nữa. Vì thế bạn sẽ không có được cái block "#caiblocknaytenphaidai" và do vậy lấy đâu ra điểm chèn.

Bạn hãy xóa các dòng code sau:

ss

(ssadd

(entmakex '(

(0 . "DIMENSION") (100 . "AcDbEntity")

(67 . 0) (8 . "0") (100 . "AcDbDimension")

(10 0.060370364143068 0.016176190318916 0.0)

(11 36.41853992802232 -27.89527883998339 0.0)

(12 0.0 0.0 0.0) (70 . 34) (1 . "") (71 . 5) (72 . 1)

(41 . 1.0) (42 . 1.308996938995746) (73 . 0) (74 . 0)

(75 . 0) (52 . 0.0) (53 . 0.0) (54 . 0.0) (51 . 0.0)

(3 . "Standard") (100 . "AcDb2LineAngularDimension")

(13 0.0 0.0 0.0) (14 200.0000000000000 0.0 0.0)

(15 24.64817964888254 -91.74677730714256 0.0)

(16 29.51916549524492 -35.10245939763303 0.0)

(40 . 0.0) (50 . 0.0))

)

ss)

và lưu lại file rồi chạy thử. Sẽ thấy nó ngon lành cành đào. Có điều cái block này sẽ không có cái dimension mà bác Ketxu muốn bổ xung vô.

Hề hề hề

@Bác Ketxu: Cái cách làm lisp này của bác cũng khá hay đó. Có điều là ... hơi khó mót.....

  • Vote tăng 1

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác

Hề hề hề,

Cái lisp này của bác ketxu hình như bị lỗi ở hàm :

(entmakex '(

(0 . "DIMENSION") (100 . "AcDbEntity")

(67 . 0) (8 . "0") (100 . "AcDbDimension")

(10 0.060370364143068 0.016176190318916 0.0)

(11 36.41853992802232 -27.89527883998339 0.0)

(12 0.0 0.0 0.0) (70 . 34) (1 . "") (71 . 5) (72 . 1)

(41 . 1.0) (42 . 1.308996938995746) (73 . 0) (74 . 0)

(75 . 0) (52 . 0.0) (53 . 0.0) (54 . 0.0) (51 . 0.0)

(3 . "Standard") (100 . "AcDb2LineAngularDimension")

(13 0.0 0.0 0.0) (14 200.0000000000000 0.0 0.0)

(15 24.64817964888254 -91.74677730714256 0.0)

(16 29.51916549524492 -35.10245939763303 0.0)

(40 . 0.0) (50 . 0.0))

)

Nó luôn trả về nil tức là hổng tạo được đối tượng.

Do vậy hàm

(setq ss

(ssadd

(entmakex '(

(0 . "DIMENSION") (100 . "AcDbEntity")

(67 . 0) (8 . "0") (100 . "AcDbDimension")

(10 0.060370364143068 0.016176190318916 0.0)

(11 36.41853992802232 -27.89527883998339 0.0)

(12 0.0 0.0 0.0) (70 . 34) (1 . "") (71 . 5) (72 . 1)

(41 . 1.0) (42 . 1.308996938995746) (73 . 0) (74 . 0)

(75 . 0) (52 . 0.0) (53 . 0.0) (54 . 0.0) (51 . 0.0)

(3 . "Standard") (100 . "AcDb2LineAngularDimension")

(13 0.0 0.0 0.0) (14 200.0000000000000 0.0 0.0)

(15 24.64817964888254 -91.74677730714256 0.0)

(16 29.51916549524492 -35.10245939763303 0.0)

(40 . 0.0) (50 . 0.0))

)

ss))

luôn bị báo là: ; error: bad argument type: lentityp nil

Và do vậy lisp sẽ dừng lại không chạy nữa. Vì thế bạn sẽ không có được cái block "#caiblocknaytenphaidai" và do vậy lấy đâu ra điểm chèn.

Bạn hãy xóa các dòng code sau:

ss

(ssadd

(entmakex '(

(0 . "DIMENSION") (100 . "AcDbEntity")

(67 . 0) (8 . "0") (100 . "AcDbDimension")

(10 0.060370364143068 0.016176190318916 0.0)

(11 36.41853992802232 -27.89527883998339 0.0)

(12 0.0 0.0 0.0) (70 . 34) (1 . "") (71 . 5) (72 . 1)

(41 . 1.0) (42 . 1.308996938995746) (73 . 0) (74 . 0)

(75 . 0) (52 . 0.0) (53 . 0.0) (54 . 0.0) (51 . 0.0)

(3 . "Standard") (100 . "AcDb2LineAngularDimension")

(13 0.0 0.0 0.0) (14 200.0000000000000 0.0 0.0)

(15 24.64817964888254 -91.74677730714256 0.0)

(16 29.51916549524492 -35.10245939763303 0.0)

(40 . 0.0) (50 . 0.0))

)

ss)

và lưu lại file rồi chạy thử. Sẽ thấy nó ngon lành cành đào. Có điều cái block này sẽ không có cái dimension mà bác Ketxu muốn bổ xung vô.

Hề hề hề

Bị lỗi như bác nói là chính xác nhưng khi xoá như bác chỉ thì chạy được nhưng hình tự động lớn hơn 5 lần so với yêu cầu.Nhờ bác và ketxu xem giúp e.

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác

Bạn thay số 5 ở dòng này thành số 1

(command "-insert" blkName "s" 5 pt "")

 

Còn về chuyện tạo dim, mỗi máy mỗi khác, mình dùng 2008 chạy ngon lành, nên cũng k biết của bạn bị làm sao :unsure:

  • Vote tăng 1

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác

Cho mình hỏi tạo dim để làm gì vậy bạn?Nếu xoá những dòng bác Bình chỉ thì nó vẫn vẽ được cái đai móc đó theo yêu cầu và lisp này sẽ ngắn hơn.Mong bạn giải thích giùm mình ý nghĩa của các dòng xoá đi mới không bị lỗi như ở trên.Thanks.

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác

Xin lỗi bạn,phiền bạn làm cho hình này scale lên 5 lần giùm với vì bạn viết bằng cách này mình không hiểu để sửa và bạn thêm giùm mình chọn điểm chèn và chỗ góc 75 độ bo góc có bán kính 75 luôn nha,nếu muốn gán cho nó là layer DAI MOC thì làm như thế nào?.Thanks.

 

 

Cho mình hỏi tạo dim để làm gì vậy bạn?Nếu xoá những dòng bác Bình chỉ thì nó vẫn vẽ được cái đai móc đó theo yêu cầu và lisp này sẽ ngắn hơn.Mong bạn giải thích giùm mình ý nghĩa của các dòng xoá đi mới không bị lỗi như ở trên.Thanks.

Mình nhiệt tình nhưng không đủ kiên nhẫn bạn ạ ^^

Dim 75 đó vỗn dĩ mình đâu muốn cho vào.

 

Ý nghĩa của các dòng xoá đi là bỏ cái đoạn mã tạo Dim đi

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác

Mình nhiệt tình nhưng không đủ kiên nhẫn bạn ạ ^^

Dim 75 đó vỗn dĩ mình đâu muốn cho vào.

 

Ý nghĩa của các dòng xoá đi là bỏ cái đoạn mã tạo Dim đi

Xin lỗi bạn vì ngay từ đầu mình nói không rõ.Ý mình bo góc đó có bán kính 75 là như file đính kèm bên dưới.Lisp của bạn đúng là từ cad 2008 trở lên không bị lỗi như nói ở trên.Xin lỗi đã làm phiền bạn.Chân thành cảm ơn bạn.

http://www.cadviet.com/upfiles/3/drawing1_75.dwg

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác

Nếu từ đầu đã có cái file như bên dưới thì mọi người chẳng mất quá nhiều thời gian để xử lý bài toán của bạn rồi.

 

(defun c:moc ()
(if (not (tblsearch "layer" "daimoc"))
 (command "-LAYER" "m" "daimoc" "c" 1 "daimoc" "" )
 (setvar "clayer" "daimoc" )
)
(setq ss
(ssadd
 (entmakex '(
(0 . "LWPOLYLINE") (100 . "AcDbEntity") (67 . 0) (8 . "daimoc") 
(100 . "AcDbPolyline") (90 . 6) (70 . 0) (43 . 0) (38 . 0) (39 . 0) 
(10 84.67697199678696 -429.3909937113676) (40 . 0) (41 . 0) (42 . 0)
(10 -12.94293644983736 -65.06853555834368) (40 . 0) (41 . 0) (42 . -0.493145426031304) 
(10 59.5015005218429 29.3428928243452) (40 . 0) (41 . 0) (42 . 0) 
(10 968.2754701986995 29.3428928243452) (40 . 0) (41 . 0) (42 . -0.9553521308632)
(10 961.4360737523748 -120.3446071756548) (40 . 0) (41 . 0) (42 . 0) 
(10 811.4360737523748 -120.3446071756548) (40 . 0) (41 . 0) (42 . 0)))
(ssadd))
  blkName "#caiblocknaytenphaidai"
 )
 (if (not (tblsearch "block" blkName))
(progn (command "-block" blkName '(0 0 0) (eval ss) ""))
)
(while (setq pt (getpoint "\n\U+0110i\U+1EC3m ch\U+00E8n :"))
(command "-insert" blkName "s" 1 pt "")
(command  "._explode" (entlast))  
)
(command ".erase" ss "")
(princ)
)

  • Vote tăng 2

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác

Nếu từ đầu đã có cái file như bên dưới thì mọi người chẳng mất quá nhiều thời gian để xử lý bài toán của bạn rồi.

 

(defun c:moc ()
(if (not (tblsearch "layer" "daimoc"))
 (command "-LAYER" "m" "daimoc" "c" 1 "daimoc" "" )
 (setvar "clayer" "daimoc" )
)
(setq ss
(ssadd
 (entmakex '(
(0 . "LWPOLYLINE") (100 . "AcDbEntity") (67 . 0) (8 . "daimoc") 
(100 . "AcDbPolyline") (90 . 6) (70 . 0) (43 . 0) (38 . 0) (39 . 0) 
(10 84.67697199678696 -429.3909937113676) (40 . 0) (41 . 0) (42 . 0)
(10 -12.94293644983736 -65.06853555834368) (40 . 0) (41 . 0) (42 . -0.493145426031304) 
(10 59.5015005218429 29.3428928243452) (40 . 0) (41 . 0) (42 . 0) 
(10 968.2754701986995 29.3428928243452) (40 . 0) (41 . 0) (42 . -0.9553521308632)
(10 961.4360737523748 -120.3446071756548) (40 . 0) (41 . 0) (42 . 0) 
(10 811.4360737523748 -120.3446071756548) (40 . 0) (41 . 0) (42 . 0)))
(ssadd))
  blkName "#caiblocknaytenphaidai"
 )
 (if (not (tblsearch "block" blkName))
(progn (command "-block" blkName '(0 0 0) (eval ss) ""))
)
(while (setq pt (getpoint "\n\U+0110i\U+1EC3m ch\U+00E8n :"))
(command "-insert" blkName "s" 1 pt "")
(command  "._explode" (entlast))  
)
(command ".erase" ss "")
(princ)
)

Cảm phiền bác xem lại giúp e lisp nó vẫn còn 1 lỗi nhỏ.Đánh lệnh MOC lần đầu thì ok,đánh tiếp lần hai nó tự tạo ra cái đai móc hình như nằm ở toạ độ 0.0 và vẫn cho mình chọn điểm chèn để vẽ tiếp.Thanks.

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác

Bạn đã xem kỹ là nó sẽ xóa cái đối tượng ở (0 0) đó đi không :) Mình dùng thấy bình thường nên hơi khó nói :unsure:

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác

Bạn đã xem kỹ là nó sẽ xóa cái đối tượng ở (0 0) đó đi không :) Mình dùng thấy bình thường nên hơi khó nói :unsure:

Nó không xoá bạn ah,chắc do cad 2007 nó bị vậy,để mai vào cty thử với cad cao hơn xem có bị không?Thanks.

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác

Vấn đề này hình như không phức tạp lắm mà thấy qua lại khá nhiều bài rồi cứ thấy bài mới mình lại nhảy vào dòm ngó và thấy rằng đang không hiệu quả nên.

-Đề nghị hugo007 ra lại đề bài 1 cách tổng quát:

+Bạn muốn thao tác nhập như nào.

+Kết quả nhận được như nào.

-Gợi ý cách ra đề:

+Hỏi điểm chèn. (điểm chèn là điểm nào trong cái hình bạn vẽ)

+Hỏi hệ số scale. (nghĩa là cái hình bạn vẽ mẫu sẽ nhân với hệ số này).

+Hỏi có đánh kích thước không. (kích thước sẽ lấy dim hiện hành để đánh).

+Nếu đánh khích thước thì đánh ở những vị trí nào.

*Up lại file hình chuẩn chưa scale thể thiện đúng layer, color, và các thuộc tính khác.

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác

Vấn đề này hình như không phức tạp lắm mà thấy qua lại khá nhiều bài rồi cứ thấy bài mới mình lại nhảy vào dòm ngó và thấy rằng đang không hiệu quả nên.

-Đề nghị hugo007 ra lại đề bài 1 cách tổng quát:

+Bạn muốn thao tác nhập như nào.

+Kết quả nhận được như nào.

-Gợi ý cách ra đề:

+Hỏi điểm chèn. (điểm chèn là điểm nào trong cái hình bạn vẽ)

+Hỏi hệ số scale. (nghĩa là cái hình bạn vẽ mẫu sẽ nhân với hệ số này).

+Hỏi có đánh kích thước không. (kích thước sẽ lấy dim hiện hành để đánh).

+Nếu đánh khích thước thì đánh ở những vị trí nào.

*Up lại file hình chuẩn chưa scale thể thiện đúng layer, color, và các thuộc tính khác.

Cảm ơn bác duy,e sẽ rút kinh nghiệm,yêu cầu của e đã được bác ketxu giúp đỡ xong nhưng vẫn còn lỗi khi đánh lệnh lần đầu thì ok,nhưng đánh lần 2 thì nó tự vẽ một cái móc ở toạ độ 0.0 và vẫn kêu chọn điểm chèn để vẽ đâm ra khi dùng lệnh lần 2 nó vẽ dư một cái tại toạ độ 0.0 mặc dù đã thử các đời cad.Mong các bác giúp đỡ.

  • Vote giảm 1

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác

Tạo một tài khoản hoặc đăng nhập để nhận xét

Bạn cần phải là một thành viên để lại một bình luận

Tạo tài khoản

Đăng ký một tài khoản mới trong cộng đồng của chúng tôi. Điều đó dễ mà.

Đăng ký tài khoản mới

Đăng nhập

Bạn có sẵn sàng để tạo một tài khoản ? Đăng nhập tại đây.

Đăng nhập ngay
Đăng nhập để thực hiện theo  

×