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

#301 ketxu

ketxu

    Copier - Paster - Editor

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

Đã gửi 28 February 2011 - 10:39 AM

Bác gia_bach đang đá xoáy em nhé ^^
@Bạn TRUNGNGAMY : mình chỉ replace thôi chứ có thấy gì lạ đâu hè ?
  • 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


#302 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 28 February 2011 - 03:28 PM

Một yêu cầu khá là "ngộ" !

Vđ này các bạn đã gặp và đã giúp rất nhiều anh em trắc địa rồi mà các bạn kg để ý đấy thôi. Trong CT in Hồ sơ kỹ thuật thửa đất do cadviet viết, thường tọa độ làm tròn đến 2 số lẽ (tức đơn vị cm). Nếu ta chỉ làm tròn trên tọa độ in ra bảng mà kg làm tròn ngay bản thân cái polyline gốc thì sẽ có sai lệch diện tích, vì dụ khi bạn kg có file mà phải nhập lại bảng tọa độ đó. Trong ngành địa chính cũng sd tọa độ đỉnh thửa đất đến cm thôi
  • 0

#303 Thaistreetz

Thaistreetz

    biết lệnh adcenter

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

Đã gửi 28 February 2011 - 05:20 PM

Vđ này các bạn đã gặp và đã giúp rất nhiều anh em trắc địa rồi mà các bạn kg để ý đấy thôi. Trong CT in Hồ sơ kỹ thuật thửa đất do cadviet viết, thường tọa độ làm tròn đến 2 số lẽ (tức đơn vị cm). Nếu ta chỉ làm tròn trên tọa độ in ra bảng mà kg làm tròn ngay bản thân cái polyline gốc thì sẽ có sai lệch diện tích, vì dụ khi bạn kg có file mà phải nhập lại bảng tọa độ đó. Trong ngành địa chính cũng sd tọa độ đỉnh thửa đất đến cm thôi

hà hà, bây giờ thì mình đã hiểu. từ hôm đến giờ cứ thắc mắc mãi không hiểu bạn muốn làm điều đó vì mục đích gì :lol:
  • 0

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


#304 ketxu

ketxu

    Copier - Paster - Editor

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

Đã gửi 28 February 2011 - 09:07 PM

Các bác ơi cho e hỏi về bài toán này chút :
Chẳng là e muốn chia đôi 1/nhiều thằng Dim bằng 1 Line như hình vẽ bên dưới
Hình đã gửi
Ý tưởng là e định:
- Phá dim ra
- Lấy entget thằng chân dim dựa vào handle so với handle của entlast (text dim)
- Lấy inters của Line cắt với line chân dim này, rồi break nó thành 2 / hoặc vẽ lại 2 nửa đoạn thẳng chân dim
- Lại dựa vào handle để lấy entget của 2 đường thẳng vừa bị break ( bỏ nếu vẽ lại đường thẳng )
- Move các phần bên trái dịch sang trái, phải dịch sang phải, copy text sang bên thiếu

E thấy nó tối tăm và dài dòng quá, liệu tạo lại 2 nửa như thế có nhanh hơn không nhỉ?Hay dùng thủ thuật nào hay hơn ?
Mọi người góp ý hộ e với :(
P/S : nếu để nguyên Dim mà không phá ra, e cũng không tìm được 1 cách hiểu trực quan 2 điểm intersec của Dim và đường thẳng cắt. E mường tượng là nó cắt ở 2 điểm giao với "đường bao" tưởng tượng của block Dim, nhưng lạ là vì khi Line cắt thẳng đứng, tọa độ x của 2 điểm này lại khác nhau @@, mong các bác chỉ giúp.
  • 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


#305 Doan Van Ha

Doan Van Ha

    biết lệnh adcenter

  • CADViet Team
  • PipPipPipPipPipPipPip
  • 5515 Bài viết
Điểm đánh giá: 2658 (tuyệt vời)

Đã gửi 28 February 2011 - 11:07 PM

Các bác ơi cho e hỏi về bài toán này chút :
Chẳng là e muốn chia đôi 1/nhiều thằng Dim bằng 1 Line như hình vẽ bên dưới
Hình đã gửi
Ý tưởng là e định:
- Phá dim ra
- Lấy entget thằng chân dim dựa vào handle so với handle của entlast (text dim)
- Lấy inters của Line cắt với line chân dim này, rồi break nó thành 2 / hoặc vẽ lại 2 nửa đoạn thẳng chân dim
- Lại dựa vào handle để lấy entget của 2 đường thẳng vừa bị break ( bỏ nếu vẽ lại đường thẳng )
- Move các phần bên trái dịch sang trái, phải dịch sang phải, copy text sang bên thiếu

E thấy nó tối tăm và dài dòng quá, liệu tạo lại 2 nửa như thế có nhanh hơn không nhỉ?Hay dùng thủ thuật nào hay hơn ?
Mọi người góp ý hộ e với :(
P/S : nếu để nguyên Dim mà không phá ra, e cũng không tìm được 1 cách hiểu trực quan 2 điểm intersec của Dim và đường thẳng cắt. E mường tượng là nó cắt ở 2 điểm giao với "đường bao" tưởng tượng của block Dim, nhưng lạ là vì khi Line cắt thẳng đứng, tọa độ x của 2 điểm này lại khác nhau @@, mong các bác chỉ giúp.

Có phải như thế này không: COPY DIM lên chính nó, sau đó TRIM mỗi DIM 1 lần về 2 phía của đường cắt?
  • 0

* Chỉ nên yêu cầu Lisp khi bạn làm việc đó mất cả ngày nhưng họ chỉ viết 1 giờ. Đừng nêu yêu cầu Lisp khi bạn chỉ làm 1 giờ nhưng bắt họ phải mất cả ngày.

* Nhờ viết lisp cũng như đi khám bệnh. Chỉ gởi căn cước và than sắp chết thì không bác sỹ nào cứu sống được.


#306 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 01 March 2011 - 07:36 AM

Các bác ơi cho e hỏi về bài toán này chút :
Chẳng là e muốn chia đôi 1/nhiều thằng Dim bằng 1 Line như hình vẽ bên dưới
Hình đã gửi
Ý tưởng là e định:
- Phá dim ra
- Lấy entget thằng chân dim dựa vào handle so với handle của entlast (text dim)
- Lấy inters của Line cắt với line chân dim này, rồi break nó thành 2 / hoặc vẽ lại 2 nửa đoạn thẳng chân dim
- Lại dựa vào handle để lấy entget của 2 đường thẳng vừa bị break ( bỏ nếu vẽ lại đường thẳng )
- Move các phần bên trái dịch sang trái, phải dịch sang phải, copy text sang bên thiếu

E thấy nó tối tăm và dài dòng quá, liệu tạo lại 2 nửa như thế có nhanh hơn không nhỉ?Hay dùng thủ thuật nào hay hơn ?
Mọi người góp ý hộ e với :(
P/S : nếu để nguyên Dim mà không phá ra, e cũng không tìm được 1 cách hiểu trực quan 2 điểm intersec của Dim và đường thẳng cắt. E mường tượng là nó cắt ở 2 điểm giao với "đường bao" tưởng tượng của block Dim, nhưng lạ là vì khi Line cắt thẳng đứng, tọa độ x của 2 điểm này lại khác nhau @@, mong các bác chỉ giúp.

ketxu post bài thế nào mà không thấy hình(image) ?!
Có mỗi con ếch-nhái gì đó làm sao góp ý.
  • 0

#307 ketxu

ketxu

    Copier - Paster - Editor

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

Đã gửi 01 March 2011 - 08:00 AM

Có phải như thế này không: COPY DIM lên chính nó, sau đó TRIM mỗi DIM 1 lần về 2 phía của đường cắt?

Mình cũng đã nghĩ đến phương án đó.Nói thì nhanh vậy thôi nhưng mình nghĩ vẫn sẽ phải mần tương đối nhiều bước để trim được :( Dim để nguyên mình không biết cách trim.Phá ra rồi trim thì lại đi theo trình tự như trên :(

ketxu post bài thế nào mà không thấy hình(image) ?!
Có mỗi con ếch-nhái gì đó làm sao góp ý.

Híc, sao e lại nhìn thấy rõ nhỉ.Chắc bọn Imageshack nó làm tiền e ^^ Các bác xem bằng hình bên dưới hộ e với nhé
Hình đã gử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


#308 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 01 March 2011 - 08:53 AM

Mình cũng đã nghĩ đến phương án đó.Nói thì nhanh vậy thôi nhưng mình nghĩ vẫn sẽ phải mần tương đối nhiều bước để trim được :( Dim để nguyên mình không biết cách trim.Phá ra rồi trim thì lại đi theo trình tự như trên :(


Híc, sao e lại nhìn thấy rõ nhỉ.Chắc bọn Imageshack nó làm tiền e ^^ Các bác xem bằng hình bên dưới hộ e với nhé
Hình đã gửi

Imageshack đòi Login mới cho đọc file image.

Từ Cad 2008 có lệnh DIMBREAK cho phép break đuờng dimension nhưng k/quả chỉ hiển thị 1 giá trị TEXT.
  • 1

#309 hungcuong375

hungcuong375

    biết zoom

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

Đã gửi 07 May 2011 - 03:21 PM

Cảm ơn bác ssg nhiều lắm. Thú thật là em cũng mới biết đến Autolisp thời gian gần đây và cũng muốn học cho biết nhưng ko có sư phụ, đọc sách thì không hiểu. Chúc bác ssg và anh em cadviet.com mạnh khoẻ và công hiến cho diễn đàn với tinh thần "share is receive". Thân
  • 0

#310 lenhatanh

lenhatanh

    biết vẽ polygon

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

Đã gửi 08 June 2011 - 08:24 PM

Chào cả nhà, mình đang rất cần tư vấn về vấn đề liệu lisp có lệnh tìm giao điểm giữa mặt (3D Face)
va đường (LWpolyline có Z=/0) không ? mọi người gúp mình nhé.
(Mình đã nêu vấn đề này bên mục "Viết Lisp theo yêu cầu phần 2" mà không ai phản hồi cả, buồn quá) !
  • 0

#311 ketxu

ketxu

    Copier - Paster - Editor

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

Đã gửi 08 June 2011 - 10:29 PM

Chào cả nhà, mình đang rất cần tư vấn về vấn đề liệu lisp có lệnh tìm giao điểm giữa mặt (3D Face)
va đường (LWpolyline có Z=/0) không ? mọi người gúp mình nhé.
(Mình đã nêu vấn đề này bên mục "Viết Lisp theo yêu cầu phần 2" mà không ai phản hồi cả, buồn quá) !

Lisp không có LỆNH bạn à :) Và nếu giải câu hỏi bạn đưa ra trong 1 ngày chưa có đáp án, hãy chịu khó chờ thêm...1,2 ngày nữa trước khi vội vàng up double vấn đề của mình. Ai cũng cần suy nghĩ mà :)
  • 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


#312 phamngoctukts

phamngoctukts

    biết lệnh adcenter

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

Đã gửi 09 June 2011 - 08:40 AM

Chào cả nhà, mình đang rất cần tư vấn về vấn đề liệu lisp có lệnh tìm giao điểm giữa mặt (3D Face)
va đường (LWpolyline có Z=/0) không ? mọi người gúp mình nhé.
(Mình đã nêu vấn đề này bên mục "Viết Lisp theo yêu cầu phần 2" mà không ai phản hồi cả, buồn quá) !

Cái này mình đã tìm giúp bạn và cũng đã thử dùng intersectwith nhưng không được nó không có tác dụng trong không gian 3D. Có lẽ sẽ có người khác giải đáp thắc mắc giúp bạn.
  • 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!

#313 lenhatanh

lenhatanh

    biết vẽ polygon

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

Đã gửi 09 June 2011 - 09:28 PM

Cám ơn tất cả các Bác, chắc ý tưởng này cụt đường rồi.
mình đã ấp ủ từ lâu rồi chứ không như bác "Ketxu" kết luận đâu, còn
Lisp không có LỆNH sao lại có (Command... ?
Bác cứ đùa em.
  • 0

#314 phamthanhbinh

phamthanhbinh

    biết lệnh adcenter

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

Đã gửi 09 June 2011 - 09:59 PM

Cám ơn tất cả các Bác, chắc ý tưởng này cụt đường rồi.
mình đã ấp ủ từ lâu rồi chứ không như bác "Ketxu" kết luận đâu, còn
Lisp không có LỆNH sao lại có (Command... ?
Bác cứ đùa em.

Hề hề hề,
Thực ra vấn đề của bạn nêu ra hơi phức tạp. Với các bề mặt phẳng và các LWpolyline thì mình đã có giải pháp là sử dụng các phép tính trong hình học giải tích. Còn với các mặt bậc cao và các đường cong phi tuyến thì chưa có các công thức giải tích phù hợp nên chưa thể trả lời bạn được. Bạn chớ nóng, hy vọng sẽ có người tìm ra giải pháp hữu hiệu giúp bạn.
Hề hề hề.
  • 1
Chúc các quý Anh trên diễn đàn luôn khỏe, đẻ thêm được nhiều thứ để mót.

#315 ketxu

ketxu

    Copier - Paster - Editor

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

Đã gửi 09 June 2011 - 10:37 PM

Cám ơn tất cả các Bác, chắc ý tưởng này cụt đường rồi.
mình đã ấp ủ từ lâu rồi chứ không như bác "Ketxu" kết luận đâu, còn
Lisp không có LỆNH sao lại có (Command... ?
Bác cứ đùa em.

Command cũng là 1 biểu thức trả về Nil đó chứ :)
Nếu ấp ủ từ lâu mà chưa tìm ra được câu trả lời, thì bạn càng cần cho CV member thời gian tìm hiểu vấn đề của bạn, đúng hok :)
Bạn ngó qua đây xem bác gile trả lời :
Line - 3dface
  • 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


#316 lenhatanh

lenhatanh

    biết vẽ polygon

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

Đã gửi 11 June 2011 - 08:45 PM

Cám ơn link của bác Ketxu, rất hữu ích và thiết thực...
  • 0

#317 t031285

t031285

    biết vẽ rectang

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

Đã gửi 24 June 2011 - 06:33 PM

Nhờ các bác xem giùm cách sử dụng initget:
Chỗ nhập đường kính thép mình muốn mặc định là 25 chỉ việc enter là sẽ hiểu nhưng lại không được,mong các bác xem lại cấu trúc giùm e.
(initget 1 "D B")
(setq res (getkword "\n<M.BANG/M.DON><B/D>:"))
(setq p1 (getpoint "\nDiem chen:")
l1 (getreal "\nBe rong mong:")
l2 (getreal "\nBe rong co mong:")
l3 (/ (- l1 l2) 2)
h1 (getreal "\nChieu cao ben mong:")
h2 (getreal "\nChieu cao phan nghieng:")
h3 (getreal "\nChieu cao co mong:")
bv (getreal "\nBe day lop bao ve:")
(setq dkt 25)
(initget 6)
(setq d (getreal (strcat "\nduong kinh thep (mm) <" (itoa dkt) ">: ")))
(if (null d) (setq d dkt))
n (getint "\nS.luong thep day mong:")
)

  • 0

#318 nguyentuyen6

nguyentuyen6

    biết lệnh chamfer

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

Đã gửi 24 June 2011 - 08:36 PM

Nhờ các bác xem giùm cách sử dụng initget:
Chỗ nhập đường kính thép mình muốn mặc định là 25 chỉ việc enter là sẽ hiểu nhưng lại không được,mong các bác xem lại cấu trúc giùm e.


Bạn thiếu hàm setq ở truớc n (getint "\nS.luong thep day mong:")
  • 0

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


#319 t031285

t031285

    biết vẽ rectang

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

Đã gửi 24 June 2011 - 10:15 PM

Bạn thiếu hàm setq ở truớc n (getint "\nS.luong thep day mong:")

Hình như không phải đâu bạn ơi.Mình làm như bạn nói vẫn không được:
(initget 1 "D B")
(setq res (getkword "\n<M.BANG/M.DON><B/D>:"))
(setq p1 (getpoint "\nDiem chen:")
l1 (getreal "\nBe rong mong:")
l2 (getreal "\nBe rong co mong:")
l3 (/ (- l1 l2) 2)
h1 (getreal "\nChieu cao ben mong:")
h2 (getreal "\nChieu cao phan nghieng:")
h3 (getreal "\nChieu cao co mong:")
bv (getreal "\nBe day lop bao ve:")
(setq dkt 25)
(initget 6)
(setq d (getreal (strcat "\nduong kinh thep (mm) <" (itoa dkt) ">: ")))
(if (null d) (setq d dkt))
(getq n (getint "\nS.luong thep day mong:")
)

  • 0

#320 phamngoctukts

phamngoctukts

    biết lệnh adcenter

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

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

Hình như không phải đâu bạn ơi.Mình làm như bạn nói vẫn không được:

(initget 1 "D B")
(setq res (getkword "\n<M.BANG/M.DON><B/D>:"))
(setq p1 (getpoint "\nDiem chen:")
l1 (getreal "\nBe rong mong:")
l2 (getreal "\nBe rong co mong:")
l3 (/ (- l1 l2) 2)
h1 (getreal "\nChieu cao ben mong:")
h2 (getreal "\nChieu cao phan nghieng:")
h3 (getreal "\nChieu cao co mong:")
bv (getreal "\nBe day lop bao ve:")
(setq dkt 25)
(initget 6)
(setq d (getreal (strcat "\nduong kinh thep (mm) <" (itoa dkt) ">: ")))
(if (null d) (setq d dkt))
(getq n (getint "\nS.luong thep day mong:")
)

Setq chứ không phải getq bạn ạ
  • 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!